如何在iPhone中增加applicationDidEnterBackground?

时间:2012-10-06 07:16:10

标签: iphone objective-c uiapplicationdelegate appdelegate

我在applicationDidEnterBackground中调用了一个api,但是applicationDidEnterBackground方法在5秒后返回,所以我怎样才能增加计时器或api完成后只有applicationDidEnterBackground将返回我们所有人建议使用{ {1}}

但是我不知道如何使用它可以引导我吗?

这是我的代码

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"); } }

1 个答案:

答案 0 :(得分: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;
}