【问题标题】:how to prevent main thread ios from killing background thread如何防止主线程ios杀死后台线程
【发布时间】:2013-09-02 00:56:00
【问题描述】:

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

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

我通过 GCD 和 dispatch_async 完成所有后台工作

【问题讨论】:

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


    【解决方案1】:

    Brad Larson 对 this post 提出了一些建议,应该会对您有所帮助。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-25
      • 2022-10-16
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多