如何防止主线程ios杀死后台线程
Posted
技术标签:
【中文标题】如何防止主线程ios杀死后台线程【英文标题】:how to prevent main thread ios from killing background thread 【发布时间】:2013-09-02 00:56:00 【问题描述】:我的AppDelegate
中有一个方法可以保存作为参数传递的NSManagedObjectContext
。这个方法可以在主线程或后台线程上调用,我想确保当调用这个方法时,当用户终止程序或你有什么时,主线程不会在中途杀死它。执行该方法时,如何防止主线程杀死该线程?
我也想这样做以将数据写入 plist 文件——这也可能发生在主线程之外。
我通过 GCD 和 dispatch_async
完成所有后台工作
【问题讨论】:
【参考方案1】:Brad Larson 对 this post 提出了一些建议,应该会对您有所帮助。
在您的 appDelegate 中,当您的应用被推送到后台时,它会调用 applicationDidEnterBackground
。从这个例程中,您可以查看您的方法当前是否正在进行中,并且可以相应地执行。
根据您的任务运行所需的时间,有两种选择:
如果所需时间明显少于 5 秒,您可以让 applicationDidEnterBackground
等到您的任务完成后再发布。如果您花费的时间超过 5 秒,您的应用就会被强制终止。
如果可能需要一段时间,您可以尝试 beginBackgroundTaskWithExpirationHandler
: 启动一个后台任务来完成您的任务。
【讨论】:
以上是关于如何防止主线程ios杀死后台线程的主要内容,如果未能解决你的问题,请参考以下文章