iOS- iOS 7 的後臺多任務 (Multitasking) 對比以前的異同、具體機制、變化


簡單來講,這玩意是對開發者友好,但對設備不友好的(可能會偷偷摸摸地佔用流量和電量)。
對用戶來講,若是你帶寬夠,對發熱不敏感的話,會獲得更好的應用體驗。

從 iOS 4 開始,應用就能夠在退到後臺後,繼續運行一小段時間了(10 分鐘)。
此外還能夠把本身聲明爲須要在後臺運行,就能不限時地運行了。不過限制爲播放音樂、使用 GPS 等。值得一提的是,有的應用爲了達到後臺不限時運行的目的,在後臺播放無聲的音樂(審覈不必定會被發現)。
iOS 5 開始又多了一種類型:下載報刊雜誌。
而後 iOS 7 則能夠下載各類玩意和定時抓取。

不過對於開發者來講,iOS 7 還有 2 個須要注意的區別:緩存

  1. iOS 7 之前,應用進入後臺繼續運行時,若是用戶鎖屏了,那麼 iOS 會等待應用運行完,才進入睡眠狀態。
    而在 iOS 7 上,系統會很快進入睡眠狀態,那些後臺應用也就暫停了。若是收到事件被喚醒(例如定時事件、推送、位置更新等),後臺應用才能繼續運行一會。
    由於處理過程變成了斷斷續續的,所以下載時也要使用 NSURLSession 來處理(即下文中的 Background Transfer Service)。
  2. 因爲 App Switcher 的存在,應用即便在後臺,用戶仍然能看到它在退出前的快照。若是有什麼不可見人的東西(例如剛拍的豔照啦,勁爆的聊天內容啦,銀行卡密碼什麼的),就處理下界面來隱藏吧。

順便再介紹下三個新東西:服務器

  1. Background Fetch。能夠設置應用在後臺至少隔多久時間就去抓取一下更新(注意是至少,不保證達到這個頻率)。以微博來舉例,若是用戶的微博被別人評論了,iOS 7 以前得讓微博的服務器來推送一條通知,用戶接收到後,進入該條微博,等待加載該評論;而 iOS 7 上則可讓用戶每隔必定時間(如一分鐘)查詢一下有沒有更新,發現有則下載更新的內容,而後發送一條本地通知給用戶,用戶接收到後,進入該條微博,顯示在後臺下載好的評論內容。若是須要的話,連 timeline 都能給你提早更新了。
  2. 很顯然,這種作法體驗更好,但更費流量和電池。
  3. Silent Remote Notification。iOS 7 以前的推送會直接彈出一個對話框,用戶確認後纔會進入應用;而 iOS 7 上則能夠不彈出對話框,而是直接通知應用去下載更新,等下完後再發送本地通知給用戶,這樣用戶進入應用後,就能直接看到更新的內容了。
    這種作法就比前者好些,不須要在後臺輪詢了。只是用戶若是對更新內容不感興趣,也會被強制下載。
    爲了不被濫用,這種推送有頻率限制(每小時幾回),因此推送 QQ、微信這類常常被刷屏的消息確定沒戲。
  4. Background Transfer Service。iOS 7 以前的應用能夠在後臺繼續運行一段時間來下載,但若是由於各類緣由而致使應用被退出了(被用戶殺掉,內存不足或超時被系統殺掉等),那麼下載是得不到保證的。iOS 7 的後臺傳輸服務則可讓系統去下載,出錯或下完後通知並喚醒應用來處理。
    對用戶來講的好處就是,想離線緩存影片時,可讓優酷之類的應用在後臺下載,本身放點音樂看看漫畫,而不用傻傻地開着優酷等待下完。上傳固然也是支持的,基友不再用擔憂你沒空發小電影什麼的了。此外,1 和 2 裏提到的後臺下載,也都會用到 3。
    爲了不浪費流量,該服務只會在 WiFi 環境下才進行傳輸。

須要特別注意的是:應用被以上三類喚醒時,只被給予幾秒鐘時間來處理更新。

要總結的話,我預測下一代 iPhone 待機時間會減小,實際可用時間減小,但官方標稱的使用時間不變。微信

 

 出處:知乎spa

 本文版權歸做者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。                                  事件

相關文章
相關標籤/搜索