2017-04-02 17 views
4

我需要能够编程后台任务。如果你愿意,可以使用一些简单的代码。虽然不是在GCD的专家我想知道:GCD后台任务最大TTL

  1. 什么是我期待的后台任务,以实际应用前的背景履行职责的最大时间退出完全
  2. 我可以“节目”多任务并期望它们按时完成
  3. 只要应用程序启动,它们是否只有活动? (我敢打赌,他们是,不像当地的通知,不真正关心应用程序是否在后台运行,所以只是要求确定)
  4. 如何跟踪它们并在需要时取消?

    例如我能够做到这样的事情,并执行任务。我在这里走了1分钟,并且工作。

    let backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: nil) 
    DispatchQueue.main.asyncAfter(wallDeadline: DispatchWallTime.now() + 60) { 
          // Some action here 
          UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier) 
    }) 
    
+0

苹果允许后台任务运行多长时间?(http://stackoverflow.com/questions/28275415/how-long-does-apple-permit-a-background-task-to-运行) – 2017-04-02 19:23:50

+0

标记为重复项,我知道您有几个问题,但在发布多个问题之前,您应该单独搜索并排除重复项。当你这样做,编辑你的问题,打我,我会删除重复的标志。 – 2017-04-02 19:24:31

回答

0

可以打印剩余使用backgroundTimeRemaining(文档here)给定会话的时间。苹果公司不保证这个时间是什么,它随电池电量,硬件,资源等而变化,因此对于长时间运行的持续性后台任务可能没有好处。您可能需要考虑background fetch API,尽管这种情况同样受iOS限制,您无法完全控制它的运行时间。