使用sdk 4.2。如果我的应用程序退出(发送到后台),然后在用户重新启动时立即出现问题。我注意到后台任务线程仍在运行。 这会扰乱我在返回前台线程时所做的任何初始化。
我该如何处理这个问题,有什么方法可以在返回前台时完全取消后台任务线程。
由于
答案 0 :(得分:0)
我假设您正在使用类似于以下内容的方式来通知设备您正在执行后台进程:
_myTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:myHandler];
当后台任务正常完成或在myHandler中取消任务时,您也应该执行此操作:
[[UIApplication sharedApplication] endBackgroundTask:_myTaskID];
_myTaskID = UIBackgroundTaskInvalid;
现在,假设您在UIApplicationDelegate的applicationWillEnterForeground中重新初始化应用程序:或者响应UIApplicationWillEnterForegroundNotification,您只需要检查_myTaskID是否设置为UIBackgroundTaskInvalid以确定您的后台任务是否仍在执行。
您尚未指定在后台任务中执行的任务类型,但应用程序应准备好在任务仍在执行时应用程序返回到前台时完成该任务。否则,您可能想要重新考虑使用后台任务。