我的AppDelegate
中有一个方法可以保存作为参数传递的NSManagedObjectContext
。可以在主线程或后台线程上调用此方法,并且我想确保在调用此方法时,主线程在用户终止程序或您拥有的内容时不会中途停止。在执行此方法时,如何防止主线程杀死此线程?
我也想将数据写入plist文件 - 这也可能发生在主线程之外。
我正在通过GCD和dispatch_async
答案 0 :(得分:0)
Brad Larson对this post提出了一些可以帮助你的建议。
在你的appDelegate中,当你的应用被推到后台时,它会调用applicationDidEnterBackground
。通过此例程,您可以查看您的方法当前是否正在进行中,并且可以相应地运行。
根据您的任务运行所需的时间,有两个选项:
如果需要的时间少于5秒,您可以等待applicationDidEnterBackground
等待任务完成后再发布。如果你花费的时间超过5秒,那么你的应用就会被逼死。
如果可能有一段时间,您可以尝试beginBackgroundTaskWithExpirationHandler
:启动完成任务的后台任务。