Сбой приложения в фоновом режиме - после перехода устройства в спящий режим - PullRequest
1 голос
/ 06 ноября 2011

Я постоянно вижу этот сбой, когда наше приложение (приложение Voip) находится в фоновом режиме, после того, как устройство переходит в спящий режим.

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 ]

1 голос
/ 01 марта 2012

NSURLConnectionLoader, вероятно, не имеет к этому никакого отношения.

Скорее всего, ваше приложение разбудило трафик на своем сигнальном сокете TCP.Как правило, сервер VoIP (SIP?) Время от времени отправляет сообщения активности.Чрезмерно агрессивный сервер может невольно убить клиента, слишком часто его отключая.

Либо убедитесь, что сервер не отправляет (SIP) контрольные сообщения слишком часто, либо используйте API BackgroundTask для предотвращенияприложение от приостановки так скоро после каждой приостановки.Таким образом, вы можете уменьшить количество отключений (за счет расхода батареи).

С уважением

Джонас Саллинг

1 голос
/ 06 ноября 2011

Похоже, вы говорите с URL, когда вы собираетесь в фоновом режиме.Если это так, то добавьте некоторый общий кэш в вашу реализацию NSURL и, если вы используете NSURLRequest, увеличьте значение timeoutInterval.

Если это не так, то воспринимайте его как фоновую задачу.Для фоновой задачи: вы можете обратиться к Обработка фоновой задачи.

С уважением,

Рено Джонс

0 голосов
/ 14 декабря 2011

Не совсем уверен, как / почему, но обновление до новой версии AsiHttp решило проблему.

...