如何防止主线程ios杀死后台线程

时间:2013-09-02 00:56:01

标签: ios multithreading core-data grand-central-dispatch nsmanagedobjectcontext

我的AppDelegate中有一个方法可以保存作为参数传递的NSManagedObjectContext。可以在主线程或后台线程上调用此方法,并且我想确保在调用此方法时,主线程在用户终止程序或您拥有的内容时不会中途停止。在执行此方法时,如何防止主线程杀死此线程?

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

我正在通过GCD和dispatch_async

进行所有后台工作

1 个答案:

答案 0 :(得分:0)

Brad Larson对this post提出了一些可以帮助你的建议。

在你的appDelegate中,当你的应用被推到后台时,它会调用applicationDidEnterBackground。通过此例程,您可以查看您的方法当前是否正在进行中,并且可以相应地运行。

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

  1. 如果需要的时间少于5秒,您可以等待applicationDidEnterBackground等待任务完成后再发布。如果你花费的时间超过5秒,那么你的应用就会被逼死。

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