2017-04-02 24 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限制,您無法完全控制它的運行時間。