iPhone OS 4.0.x - блокировка операций ввода-вывода в фоновом режиме - PullRequest
1 голос
/ 11 августа 2010

В настоящее время я реализую некоторую логику для чтения из сокета TCP в фоновом режиме.

CFReadStreamRead функция используется для извлечения некоторых данных из сокета, и на данный момент все работает нормально.

Но мне интересно, как iPhone OS 4.x обрабатывает блокировку операций ввода-вывода в фоновом режиме.Например: функция CFReadStreamRead может блокироваться часами в ожидании некоторых входящих данных.

Существуют ли какие-либо официальные ограничения, например, 10 минут для фоновых задач?Будет ли мое приложение уничтожено операционной системой iPhone в случае длительной операции блокировки ввода-вывода?

Обратите внимание: я не выполняю функцию блокировки ввода-вывода в фоновой задаче .Сам код находится в методе applicationDidEnterBackground моего UIApplicationDelegate.

Само приложение настроено с параметром «voip» в файле Info.plst + CFReadStream настроен в соответствии с рекомендациями Apple с параметром kCFStreamNetworkServiceTypeVoIP.

Так что в основном это обычный сценарий применения VoIP в фоновом режиме.

Спасибо!

1 Ответ

0 голосов
/ 11 августа 2010

Замените его на sleep(86400), присоедините к нему в отладчике и посмотрите, сколько времени пройдет, прежде чем вас убьют. Я не думаю, что это будет так долго; Вы должны ответить на applicationDidEnterBackground: своевременно. Это почти наверняка не даст вам больше времени, чем beginBackgroundTaskWithExpirationHandler:.

Попробуйте проверить [UIApplication backgroundTimeRemaining].

...