当设备进入睡眠模式后,当我们的应用程序(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
这次事故的原因是什么?我应该做些什么来阻止它?
答案 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解决了这个问题。