我正在尝试在退出我的 iOS 应用程序的前台后添加对完成任务的支持。我在互联网上看到的所有教程都指向我在 Application Delegate 中编写类似这样的内容:
- (void)applicationDidEnterBackground:(UIApplication *)application {
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
UIApplication *application = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier background_task;
background_task = [application beginBackgroundTaskWithExpirationHandler: ^ {
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//DO STUFF IN BACKGROUND HERE
MyTask *task = [[MyTask alloc] initWithURL:@"http://google.com"];
[task setDelegate:self];
[task start];
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
});
}
}
该任务能够启动,但在它启动后,下一行被处理并且我的应用程序被终止。我能够知道MyTask
由于委托调用而停止的时间,但是如何更改我的程序以便在委托被调用后将后台任务设置为无效。我会搬家吗
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
到委托功能,还是我需要做其他事情。
提前感谢您的帮助,古维