0

クラッシュ レポートの詳細:

Exception Type:  00000020
Exception Codes: 0x8badf00d
Highlighted Thread:  3

Application Specific Information:
MyApp[123] has active assertions beyond permitted time: 
{(
    <SBProcessAssertion: 0x4b52f0> identifier: CoreLocationBackgroundClient process: MyApp[579] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:123 preventSuspend  preventIdleSleep 
)}

Elapsed total CPU time (seconds): 13.980 (user 13.980, system 0.000), 1% CPU 
Elapsed application CPU time (seconds): 0.251, 0% CPU

スレッド 3 は次のとおりです。

Thread 3 name:  com.apple.NSURLConnectionLoader
Thread 3:
0   libsystem_kernel.dylib          0x30e67004 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x30e671fa mach_msg + 50
2   CoreFoundation                  0x381ea3ec __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x381e9124 __CFRunLoopRun + 876
4   CoreFoundation                  0x3816c49e CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x3816c366 CFRunLoopRunInMode + 98
6   Foundation                      0x373a7bb2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 302
7   Foundation                      0x373a7a7a -[NSThread main] + 66
8   Foundation                      0x3743b58a __NSThread__main__ + 1042
9   libsystem_c.dylib               0x333c972e _pthread_start + 314
10  libsystem_c.dylib               0x333c95e8 thread_start + 0

アプリケーションは GPS を使用します。なぜこのクラッシュが起こっているのか分かりますか?

4

1 に答える 1

1

間違った種類のバックグラウンド処理を使用しているようです。600秒がギブアウェイです。これは、タスク完了 API を使用していることを示唆しています。この API は、アプリケーションが中断される前に特定のアクティビティを完了するための限られた時間 (現在は 10 分) をアプリケーションに与えます。

バックグラウンドで GPS 位置を監視し続けたい場合は、特定の Core Location API を使用する必要があります (そして、Info.plist で適切なフラグを設定します)。

于 2012-06-26T07:17:45.587 に答える