崩溃报告详情: Hardware Model: iPhone5,2Exception Type: 00000020Exception Codes: 0x000000008badf00dHighlighted Thread: 3Application Specific Information:MyApp[1369] has active assertions beyond permitted time: {(BKProcessAssertion: 0
Hardware Model: iPhone5,2 Exception Type: 00000020 Exception Codes: 0x000000008badf00d Highlighted Thread: 3 Application Specific Information: MyApp[1369] has active assertions beyond permitted time: {( <BKProcessAssertion: 0x175ca7d0> identifier: Called by MyApp, from -[AppDelegate applicationDidEnterBackground:] process: MyApp[1369] permittedBackgroundDuration: 180.000000 reason: finishTask owner pid:1369 preventSuspend preventIdleSleep preventSuspendOnSleep )}
线程3:
Thread 3 name: com.apple.NSURLConnectionLoader Thread 3: 0 libsystem_kernel.dylib 0x3937ea50 mach_msg_trap + 20 1 libsystem_kernel.dylib 0x3937e848 mach_msg + 36 2 CoreFoundation 0x2e61261c __CFRunLoopServiceMachPort + 152 3 CoreFoundation 0x2e610d3c __CFRunLoopRun + 788 4 CoreFoundation 0x2e57b7a4 CFRunLoopRunSpecific + 520 5 CoreFoundation 0x2e57b586 CFRunLoopRunInMode + 102 6 Foundation 0x2efbb23c +[NSURLConnection(Loader) _resourceLoadLoop:] + 316 7 Foundation 0x2f030a0a __NSThread__main__ + 1058 8 libsystem_pthread.dylib 0x393f8956 _pthread_body + 138 9 libsystem_pthread.dylib 0x393f88c6 _pthread_start + 98 10 libsystem_pthread.dylib 0x393f6ae4 thread_start + 4
我的应用程序在“applicationDidEnterBackground”使用此代码的后台任务:
// 10min background task UIBackgroundTaskIdentifier myLongTask; myLongTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [locationMgrInstance timerSet]; }]; // cell change [locationMgrInstance startMonitoringSignificantLocationChanges];
它适用于iOS 6 ……但是! iOS 7在180秒后抛出断言.
救命!
查看Apple iOS App Programming Guide Background Execution Guide中的后台执行和多任务部分.
此外,您可以检查[[UIApplication sharedApplication] backgroundTimeRemaining] – 在iOS 6上,此时间为10分钟.在iOS 7中它从3分钟开始 – 这就是为什么你在180秒后超时的原因.您需要重新评估您的背景策略以处理新限制.