對iOS后台模式最多10分鍾運行時間的進一步理解


在app進入后台時,系統初始默認是只有10s的處理時間,但如果10s不夠,我們可以主動申請,網上流傳最多的一個說法是10分鍾。

但這種說法有個前提:

那就是iOS7之前,是這樣

但從iOS7開始,我們申請后,最多只有180s的處理時間(3分鍾),一直頗不理解,為什么變成了3分鍾。

 

申請方法swift寫法:

    var backgroundTaskIdentifier:UIBackgroundTaskIdentifier!



backgroundTaskIdentifier = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({ UIApplication.sharedApplication().endBackgroundTask(self.backgroundTaskIdentifier) if self.backgroundTaskIdentifier != UIBackgroundTaskInvalid{ self.backgroundTaskIdentifier = UIBackgroundTaskInvalid } })

  

 

后來看到一個說法是:

系統主動將10分鍾分為N次的分配,總的后台時間還是可以10分鍾的,但我們每次申請,卻只能得到180s的時間,多次以后,總的時間到達10分鍾后,即使再次申請,都是無效的。

 

那么多次申請怎么實現呢?

 

我這邊講一個我碰到的情況:

比如app即使一直在后台,但我這邊能夠不定期收到系統回調(我用到了iBeacon),每次收到回調,都能夠將我的應用喚醒10s,理論情況下,這種喚醒系統只會分配給你10s的處理時間,但我又發現10s時間是不夠我處理完所有事情的。

所以我這種情況,正好可以符合這種場景,我只需要在我的回調方法里再次申請一次延長時間,就能夠又得到一次最多180s的處理時間,當然如果你20s就都處理完了,時間是只算20s的。

多次申請直至系統累計到600s的時間,系統才會停止。

 

這種運用場景,就能充分用到10分鍾,所以記錄下僅供參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM