NSURLCподключение и многозадачность в iOS - PullRequest
7 голосов
/ 28 ноября 2010

Я использую NSURLConnection для асинхронной загрузки ресурсов в iOS. (Это большие PDF-файлы, поэтому при медленном соединении требуется некоторое время.)

Сейчас я обновляю свое приложение с iOS 3 на iOS 4. Так как мое приложение не связано с локацией, voip и фоновой музыкой, думаю, мне нужно что-то сделать.

Мой вопрос в том, что происходит с NSURLConnection, работающим в данный момент? Это приостановлено и волшебным образом возобновлено, когда приложение возвращается на передний план, или это прямо убито? Если это последнее, какова стандартная стратегия, чтобы возобновить его автоматически позже? Существует ли подкласс с открытым исходным кодом NSURLConnection, который автоматически делает это?

Ответы [ 2 ]

1 голос
/ 24 января 2011

NSURLConnection действительно приостанавливается и запускается снова, когда приложение выходит на передний план. Просто убедитесь, что вы разрываете соединение, если приложение переходит из приостановленного состояния в неработающее, как показано ниже:

- (void)applicationWillTerminate:(UIApplication *)application {
    if (self.downloadConnection != nil){
        [self.downloadConnection cancel];
    }
}
1 голос
/ 28 ноября 2010

Вы можете запустить задачу, которая будет выполняться не более 10 минут. Посмотрите на использование beginBackgroundTaskWithExpirationHandler: API для этой цели. Просто знайте, что если ваша задача занимает слишком много времени, она будет убита ОС.

...