Длинный опрос и приложение DidEnterBackground: - PullRequest
1 голос
/ 24 марта 2012

Я пишу очень простое приложение чата и хотел бы знать, как приостановить длительный селектор опроса, когда приложение входит в фоновый режим.

В настоящее время у меня есть класс чата (A UIView), который обрабатываетдлинный опрос примерно так:

-(void)startPolling
{
    [self performSelectorInBackground:@selector(longPoll) withObject: nil];
}

- (void) longPoll {

    //Poll the Requested URL...

    NSData* responseData = [NSURLConnection sendSynchronousRequest:request
                                                 returningResponse:&response error:&error];

    [self performSelectorOnMainThread:@selector(dataReceived:) 
                           withObject:responseData waitUntilDone:YES];
    [self performSelectorInBackground:@selector(longPoll) withObject: nil];
}

-(void) dataReceived: (NSData*) data
{    
   //Reload my Tableview etc.. 
}

Как мне использовать applicationDidEnterBackground:, чтобы приостановить селектор longPoll, пока приложение не вернется на передний план?Или это автоматически делается делегатом приложения?

Спасибо

1 Ответ

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

Запрос будет автоматически приостановлен.Не гарантируется, что запрос будет успешным после его возобновления, поэтому вам придется обрабатывать ошибки, но он не должен прерываться.

Обратите внимание, что, вероятно, есть лучшие способы записиэто чем использование performSelectorInBackground:, которое всегда раскручивает новый аппаратный поток.Для начала, вероятно, лучше просто выполнить цикл внутри longPoll вместо того, чтобы начинать новый поток для нового запроса.

...