我在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");
}
}
。
答案 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;
}