我的监视应用程序大量使用后台刷新任务,而在任务期间工作是异步的。有时(在15-20个后台任务执行中),操作系统会以0xc51bad03原因终止它。 发布watchOS3.1的notes说:
后台刷新 违反系统资源将导致应用程序崩溃报告。异常代码提供有关违规性质的上下文:
- 0xc51bad01该应用占用了太多的CPU时间。
- 0xc51bad02该应用占用了太多时间。
- 0xc51bad03应用程序可能没有足够的运行时间来完成任务。
这"可能没有足够的运行时间"意思?可能的原因是什么?在WWDC会话期间未解释此代码。看起来这个崩溃不依赖于我目前执行的代码中的确切位置。
崩溃报告除了没有让理由更清楚:
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace SPRINGBOARD, Code 0xc51bad03
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x264216d0 mach_msg_trap + 20
1 libsystem_kernel.dylib 0x2642149c mach_msg + 40
2 CoreFoundation 0x267aed88 __CFRunLoopServiceMachPort + 154
3 CoreFoundation 0x267ad04c __CFRunLoopRun + 1068
4 CoreFoundation 0x26701f74 CFRunLoopRunSpecific + 354
5 Foundation 0x2704307c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 246
6 Foundation 0x2708ff5a -[NSRunLoop(NSRunLoop) run] + 80
7 libxpc.dylib 0x265330de _xpc_objc_main + 600
8 libxpc.dylib 0x265346fe xpc_main + 166
9 Foundation 0x27217fea service_connection_handler + 0
10 PlugInKit 0x303eb1be -[PKService run] + 774
11 WatchKit 0x342efe00 main + 134
12 libdyld.dylib 0x26344566 start + 2
...