0

我有一个方法可以将传递的参数AppDelegate保存为参数。NSManagedObjectContext这个方法可以在主线程或后台线程上调用,我想确保当调用这个方法时,当用户终止程序或你有什么时,主线程不会在中途杀死它。执行此方法时如何防止主线程杀死该线程?

我也想这样做以将数据写入 plist 文件——这也可能发生在主线程之外。

我正在通过 GCD 和dispatch_async

4

1 回答 1

0

Brad Larson 对这篇文章有一些建议,应该对你有所帮助。

在您的 appDelegate 中,当您的应用程序被推送到后台时,它会调用applicationDidEnterBackground. 从这个例程中,您可以查看您的方法当前是否正在进行中,并且可以相应地执行。

根据您的任务运行所需的时间,有两个选项:

  1. 如果所需时间明显少于 5 秒,您可以applicationDidEnterBackground等到任务完成后再发布。如果您花费的时间超过 5 秒,您的应用程序将被强制终止。

  2. 如果可能需要一段时间,您可以尝试 beginBackgroundTaskWithExpirationHandler: 启动一个后台任务来完成您的任务。

于 2013-09-02T02:35:55.207 回答