我收到以下崩溃日志,显示我的应用程序“超出允许时间的活动断言”。我的应用是一个音频流应用程序。只有当应用程序在后台并且不传输任何音频内容时才会发生崩溃。
注意:
有关如何跟踪此问题的任何建议吗?
这是崩溃日志(没有二进制图像):
Incident Identifier: 0467A340-1FD2-4D49-9FA4-76360889976D
CrashReporter Key: fdae46f133d13bdc3f043301bc008bd56155588d
Hardware Model: iPhone3,1
Process: MyApp [249]
Path: /var/mobile/Applications/DAA6B446-07D3-4C7C-BD44-80920338CAF4/MyApp/MyApp
Identifier: MyApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2011-11-17 15:25:59.960 -0500
OS Version: iPhone OS 5.0.1 (9A405)
Report Version: 104
Exception Type: 00000020
Exception Codes: 0x8badf00d
Highlighted Thread: 4
Application Specific Information:
MyApp[249] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0xfed8890> identifier: UIKitBackgroundCompletionTask process: MyApp[249] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:249 preventSuspend preventIdleSleep
)}
Elapsed total CPU time (seconds): 10.700 (user 10.700, system 0.000), 2% CPU
Elapsed application CPU time (seconds): 0.024, 0% CPU
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x3630f010 0x3630e000 + 4112
1 libsystem_kernel.dylib 0x3630f206 0x3630e000 + 4614
2 CoreFoundation 0x343d841c 0x3434b000 + 578588
3 CoreFoundation 0x343d711a 0x3434b000 + 573722
4 CoreFoundation 0x3435a4d6 0x3434b000 + 62678
5 CoreFoundation 0x3435a39e 0x3434b000 + 62366
6 GraphicsServices 0x30bdefc6 0x30bdb000 + 16326
7 UIKit 0x377db73c 0x377aa000 + 202556
8 MyApp 0x000024de main (main.m:14)
9 MyApp 0x0000249c start + 32
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x3630f3b4 0x3630e000 + 5044
1 libdispatch.dylib 0x37039e78 0x3702d000 + 52856
2 libdispatch.dylib 0x37039b96 0x3702d000 + 52118
Thread 2 name: WebThread
Thread 2:
0 libsystem_kernel.dylib 0x3630f010 0x3630e000 + 4112
1 libsystem_kernel.dylib 0x3630f206 0x3630e000 + 4614
2 CoreFoundation 0x343d841c 0x3434b000 + 578588
3 CoreFoundation 0x343d7154 0x3434b000 + 573780
4 CoreFoundation 0x3435a4d6 0x3434b000 + 62678
5 CoreFoundation 0x3435a39e 0x3434b000 + 62366
6 WebCore 0x3682e128 0x36786000 + 688424
7 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534
8 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208
Thread 3 name: com.apple.coremedia.player.async
Thread 3:
0 libsystem_kernel.dylib 0x3631f068 0x3630e000 + 69736
1 libsystem_c.dylib 0x331aaf2e 0x3319b000 + 65326
2 libsystem_c.dylib 0x331aacaa 0x3319b000 + 64682
3 CoreMedia 0x32306000 0x32303000 + 12288
4 MediaToolbox 0x35169fba 0x35166000 + 16314
5 CoreMedia 0x32325bc6 0x32303000 + 142278
6 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534
7 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208
Thread 4 name: com.apple.NSURLConnectionLoader
Thread 4:
0 libsystem_kernel.dylib 0x3630f010 0x3630e000 + 4112
1 libsystem_kernel.dylib 0x3630f206 0x3630e000 + 4614
2 CoreFoundation 0x343d841c 0x3434b000 + 578588
3 CoreFoundation 0x343d7154 0x3434b000 + 573780
4 CoreFoundation 0x3435a4d6 0x3434b000 + 62678
5 CoreFoundation 0x3435a39e 0x3434b000 + 62366
6 Foundation 0x35d5abc2 0x35d4a000 + 68546
7 Foundation 0x35d5aa8a 0x35d4a000 + 68234
8 Foundation 0x35dee59a 0x35d4a000 + 673178
9 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534
10 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208
Thread 5 name: com.apple.CFSocket.private
Thread 5:
0 libsystem_kernel.dylib 0x3631f570 0x3630e000 + 71024
1 CoreFoundation 0x343dc66a 0x3434b000 + 595562
2 libsystem_c.dylib 0x331aac16 0x3319b000 + 64534
3 libsystem_c.dylib 0x331aaad0 0x3319b000 + 64208
Unknown thread crashed with unknown flavor: 5, state_count: 1
答案 0 :(得分:0)
beginBackgroundTaskWithExpirationHandler
有一个你可能超过的时间限制。您可以查看使用UIApplication
的{{1}}属性重播的时间。
答案 1 :(得分:0)
当应用程序通过applicationWillEnterForeground()返回到前台时,您不能依赖于结束后台任务。 iOS仅允许3分钟在后台执行工作。这就是后台任务begin方法有一个到期处理程序的原因。您应该(很快)清理您的任务并在调用到期处理程序时结束该任务(通过endBackgroundTask):
UIBackgroundTaskIdentifier bkgndTask;
---
bkgndTask = [app beginBackgroundTaskWithExpirationHandler:^{
if (bkgndTask != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] bkgndTask];
bkgndTask = UIBackgroundTaskInvalid;
}
}];