0

我调用了一个 api applicationDidEnterBackground,但是applicationDidEnterBackground方法在 5 秒后返回,所以我怎么能增加计时器或者在 api 完成之后只会applicationDidEnterBackground返回我们所有人建议使用beginBackgroundTaskWithExpirationHandler

但是不知道怎么用,有大神指导一下吗?

这是我的代码

- (void)applicationDidEnterBackground:(UIApplication *)application
{

    NSString *link=[NSString stringWithFormat:@"http://www.askpundit.com/dev/js_chat/getNewRequest.php?updateStatus=%@&clientid=%@",UpdateStatus,[self getSetting:@"Clientid"]]; 
    NSURLRequest *request=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:link]];  

    NSURLConnection *connaction=[[NSURLConnection alloc] initWithRequest:request delegate:self];

    if (connaction)
    {
        responsedata=[NSMutableData data];

        NSLog( @"Data Saved");

    }
} 

applicationDidEnterBackground任何人都可以指导我在通话结束后如何返回。

4

1 回答 1

1

正如你所猜测的,beginBackgroundTaskWithExpirationHandler是你应该使用的。这很简单。该片段经过最低限度的校对,并且不完整 - 但演示了该方法。

- (void)applicationDidEnterBackground:(UIApplication *)application {
    _completionTask = [application beginBackgroundTaskWithExpirationHandler:^{
        [application endBackgroundTask:_completionTask];
        _completionTask = UIBackgroundTaskInvalid;
    }];
    // begin your NSURLConnection, etc.
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    if( _completionTask != UIBackgroundTaskInvalid ) {
         [application endBackgroundTask:_completionTask];
         _completionTask = UIBackgroundTaskInvalid;
}
于 2012-10-06T10:27:25.680 回答