Background Task 这种方式,就是系统提供了 beginBackgroundTaskWithExpirationHandler 方法来延长后台执行时间,可以解决你退后台后还需要一些时间去处理一些任务的诉求。但在使用时碰到一些问题:
- 如果是debug调试状态,你会发现程序退到后台,任务会一直在执行。
测试后台执行时间时,不能是调试状态。必须断开xcode - beginBackgroundTaskWithExpirationHandler与endBackgroundTask是成对出现的。如果不成对出现,5s app会被杀掉。
- 正确写法:yourTask应该放在beginBackgroundTaskWithExpirationHandler前调用,而不是block块
[self yourTaskWithApplication:application];
self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
[application endBackgroundTask:self.backgroundTaskIdentifier];
self.backgroundTaskIdentifier = UIBackgroundTaskInvalid;
}]; - 我们可以借助 控制台 来判断app是否还在执行,日志是否还在打印。
网友评论