应用程序在后台运行时崩溃 - 设备进入睡眠模式后

时间:2011-11-06 10:03:16

标签: iphone objective-c ios4 ios5 multitasking

当设备进入睡眠模式后,当我们的应用程序(Voip App)处于后台时,我经常会看到此崩溃。

Exception Type:  00000020

Exception Codes: 0xbad22222

Highlighted Thread:  3



Application Specific Information:

SBUnsuspendLimit ooVoo[360] exceeded 15 wakes in 300 sec



Thread 3 name:  com.apple.NSURLConnectionLoader

Thread 3:

0   libsystem_kernel.dylib          0x307fc010 mach_msg_trap + 20

1   libsystem_kernel.dylib          0x307fc206 mach_msg + 50

2   CoreFoundation                  0x3569b41c __CFRunLoopServiceMachPort + 120

3   CoreFoundation                  0x3569a154 __CFRunLoopRun + 876

4   CoreFoundation                  0x3561d4d6 CFRunLoopRunSpecific + 294

5   CoreFoundation                  0x3561d39e CFRunLoopRunInMode + 98

6   Foundation                      0x3167abc2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 302

7   Foundation                      0x3167aa8a -[NSThread main] + 66

8   Foundation                      0x3170e59a __NSThread__main__ + 1042

9   libsystem_c.dylib               0x30b68c16 _pthread_start + 314

10  libsystem_c.dylib               0x30b68ad0 thread_start + 0

这次事故的原因是什么?我应该做些什么来阻止它?

3 个答案:

答案 0 :(得分:1)

当您要去后台时,似乎您正在与URL通话。如果是,则将一些共享缓存添加到NSURL实现中,如果使用的是NSURLRequest,则增加timeoutInterval值。

如果不是这种情况,则将其作为后台任务处理。对于后台任务:您可以参考Background Task Handling.

此致

Reno Jones

答案 1 :(得分:1)

NSURLConnectionLoader可能与它无关。

最有可能的是,您的应用程序被TCP信令插槽上的流量唤醒。通常,VoIP(SIP?)服务器每隔一段时间发送一次保持活动消息。一个过于激进的服务器可能会不经常地通过像往常一样取消它来杀死客户端。

要么确保服务器不经常发送(SIP)保持活动,要么使用BackgroundTask API来阻止应用程序在每次取消挂起后立即暂停。通过这种方式,您可以保持不受影响的数量(以电池消耗为代价)。

此致

Jonas Salling

答案 2 :(得分:-1)

不完全确定如何/为什么,但更新到更新版本的AsiHttp解决了这个问题。