2016-10-28 81 views
0

是否有可能以約5分鐘的延遲運行後臺任務,並且在任務執行前應用程序進入前臺時能夠取消後臺任務?延遲後在iOS上執行後臺任務

爲了解釋這種情況,我正在開發的應用程序在開放時的設置時間相當長。理想情況下,它需要在進入後臺時清理所有資源,並在進入前臺時從頭開始重新創建它們。這部分是爲了安全,部分是爲了減少設備能源使用(網絡,BLE)。

如果用戶在短時間內切換到另一個應用程序並返回到我的應用程序,則會產生一種尷尬的用戶體驗。他們堅持等待幾秒鐘,重新初始化所有內容。

作爲一種折衷,我想在清理過程中增加一個延遲,比如5分鐘。因此,如果用戶在不到5分鐘的時間內回來,所有的東西都在那裏,立即可用。否則,它需要一些時間來重新初始化。我怎麼能實現它?

+0

你想在後臺執行什麼樣的任務? –

+0

該任務釋放一些資源並重置導航堆棧。 – SaltyNuts

回答

1

在iOS中,當用戶存在應用程序時,應用程序最多可以有3分鐘的後臺處理時間。所以如果你願意使用3分鐘計時器,你可以在UIApplication.sharedApplication上使用beginBackgroundTaskWithExpirationHandler:。後臺任務可以使用dispatch_after以2分55秒的時間或接近3分鐘的時間進行清理。當用戶回到應用程序時,如果時間未到期,您可以設置標誌或重置計時器,以便dispatch_after什麼也不做。