2016-12-06 40 views
0
dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(delay * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), closure) 

當使用此方法並按下iphone上的home按鈕時,延遲將不再有效或無效。相反,當回到我的應用程序關閉時,會發生什麼情況是假設在「10秒」後纔會觸發回到應用程序時纔會觸發。無論我在1小時或10秒後回到應用程序。當iPhone進入後臺狀態時,dispatch_time如何工作?

我會怎麼做背景的延遲後觸發關閉工作?

回答

0

當你按主頁按鈕時,你的應用程序將轉換到後臺狀態,如果沒有任何東西使它保持在該狀態,它將轉換到沒有代碼運行的掛起狀態。

使應用程序在後臺運行的一種方法是使用後臺任務。

let taskId = UIApplication.sharedApplication.beginBackgroundTask(..)

然後,您可以結束後臺任務代碼執行後:

UIApplication.sharedApplication.endBackgroundTask(taskId)

這將允許應用程序返回到暫停狀態。

+0

我將如何去進入我想在這個方法中運行的功能?只有「beginBackgroundTaskWithName(name:expressionHandler :)」 – Whitebeard

+0

使用「beginBackgroundTaskWithName(name:expressionHandler :)」。傳入一個名稱,該名稱可以是任何字符串,如果後臺任務已由系統過期,將會運行一個閉包。 –

相關問題