アプリをバックグラウンドモードにすると、以下のログでアプリがクラッシュしました。
これはクラッシュのデバイスログです:
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace ASSERTIOND, Code 0x8badf00d
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x0000000183563de8 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000183563c60 mach_msg + 72
2 CoreFoundation 0x0000000183aa6e40 __CFRunLoopServiceMachPort + 196
3 CoreFoundation 0x0000000183aa4908 __CFRunLoopRun + 1568
4 CoreFoundation 0x00000001839c4da8 CFRunLoopRunSpecific + 552
5 GraphicsServices 0x00000001859aa020 GSEventRunModal + 100
6 UIKit 0x000000018d9e4758 UIApplicationMain + 236
7 AijouNetto 0x00000001008a851c main + 410908 (AppDelegate.swift:17)
8 libdyld.dylib 0x0000000183455fc0 start + 4
これはクラスの実装です:
class EKNBackgroundTaskManager {
let backgroundDQ = DispatchQueue.global(qos: .background)
var backgroundUpdateTask: UIBackgroundTaskIdentifier!
init(withName: String) {
self.backgroundUpdateTask = UIApplication.shared.beginBackgroundTask(withName: withName) {}
}
func runBackgroundTask(withCode: @escaping (_ cH: @escaping () -> Void) -> Void)
{
backgroundDQ.async {
withCode() {
self.endBackgroungTask()
}
}
}
func endBackgroungTask() {
if backgroundUpdateTask != nil && backgroundUpdateTask != UIBackgroundTaskInvalid {
UIApplication.shared.endBackgroundTask(backgroundUpdateTask)
backgroundUpdateTask = UIBackgroundTaskInvalid
}
}
}
アプリケーションがバックグラウンドモードになっている間にこのバグを修正するためのアドバイスはありますか?
アプリケーションがバックグラウンドで長時間使用したか、起動に時間がかかりすぎたため、iOSウォッチドッグプロセスによって終了しました(デバイスでのみ発生します)。これは、終了理由コードから確認できます。詳細については、この投稿を参照してください:8badf00dはどういう意味ですか?
クラッシュの原因が開始時刻なのか、バックグラウンドタスクなのかを確認する必要があります。開始時間の場合は、なんとかしてアプリの起動時間を短縮する必要があります。Appleはこのテーマについて多くの講演を行っており、対応するビデオはApple Developerプラットフォームで見つけることができます(過去数年間のWWDCビデオの中で、たとえばこれ:https://developer.apple.com/videos/play/ wwdc2016 / 406)。
長時間実行されるバックグラウンドタスクとその実装方法については、Appleのドキュメントを参照してください:https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc / uid / TP40007072-CH4-SW3
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加