我有一个方法可以将传递的参数AppDelegate
保存为参数。NSManagedObjectContext
这个方法可以在主线程或后台线程上调用,我想确保当调用这个方法时,当用户终止程序或你有什么时,主线程不会在中途杀死它。执行此方法时如何防止主线程杀死该线程?
我也想这样做以将数据写入 plist 文件——这也可能发生在主线程之外。
我正在通过 GCD 和dispatch_async
我有一个方法可以将传递的参数AppDelegate
保存为参数。NSManagedObjectContext
这个方法可以在主线程或后台线程上调用,我想确保当调用这个方法时,当用户终止程序或你有什么时,主线程不会在中途杀死它。执行此方法时如何防止主线程杀死该线程?
我也想这样做以将数据写入 plist 文件——这也可能发生在主线程之外。
我正在通过 GCD 和dispatch_async
Brad Larson 对这篇文章有一些建议,应该对你有所帮助。
在您的 appDelegate 中,当您的应用程序被推送到后台时,它会调用applicationDidEnterBackground
. 从这个例程中,您可以查看您的方法当前是否正在进行中,并且可以相应地执行。
根据您的任务运行所需的时间,有两个选项:
如果所需时间明显少于 5 秒,您可以applicationDidEnterBackground
等到任务完成后再发布。如果您花费的时间超过 5 秒,您的应用程序将被强制终止。
如果可能需要一段时间,您可以尝试 beginBackgroundTaskWithExpirationHandler
: 启动一个后台任务来完成您的任务。