ios7 多任務 VS ios7之前多任務

來源:互聯網
上載者:User

iOS 7引入了“Scheduled updates”機制,允許任何類型的App建立後台進程,用於App狀態的更新。
這種更新有兩種模式:“拉模數式”和“推播通知模式”.前者是主動更新,後者是收到遠程通知後被動
更新。當選擇拉模數式並建立相應代碼後,裝置處於WiFi網路並且啟動後,App就會自動連接伺服器擷取
相關資料,並根據使用者使用的時間智慧地判斷拉取資料的頻率等。而選擇推播通知模式後,當裝置收到
遠程通知以後才觸發擷取資料的代碼,從伺服器擷取資料之後再通知使用者。

這種機制的引入,在真實的多線程和功耗之間做了更好的平衡,使得iOS的多任務機制更加智能和完善,
而新的多任務介面,也是眾望所歸,可以預覽後台App的介面,滑動刪除進程,使用者體驗較之前的系統
提升很大。

 

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. Silent Remote Notification。iOS 7 之前的推送會直接彈出一個對話方塊,使用者確認後才會進入應用;而 iOS 7 上則可以不彈出對話方塊,而是直接通知應用去下載更新,等下完後再發送本地通知給使用者,這樣使用者進入應用後,就能直接看到更新的內容了。
    這種做法就比前者好些,不需要在後台輪詢了。只是使用者如果對更新內容不感興趣,也會被強制下載。
    為了避免被濫用,這種推送有頻率限制(每小時幾次),所以推送 QQ、這類經常被刷屏的訊息肯定沒戲。
  3. Background Transfer Service。iOS 7 之前的應用可以在後台繼續運行一段時間來下載,但如果因為各種原因而導致應用被退出了(被使用者殺掉,記憶體不足或逾時被系統殺掉等),那麼下載是得不到保證的。iOS 7 的後台傳輸服務則可以讓系統去下載,出錯或下完後通知並喚醒應用來處理。
    對使用者來說的好處就是,想離線緩衝影片時,可以讓優酷之類的應用在後台下載,自己放點音樂看看漫畫,而不用傻傻地開著優酷等待下完。上傳當然也是支援的,基友再也不用擔心你沒空發小電影什麼的了。此外,1 和 2 裡提到的後台下載,也都會用到 3。
    為了避免浪費流量,該服務只會在 WiFi 環境下才進行傳輸。

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

 

 

 

ios7 之前多任務

簡單來說,iOS app類型可以分為三種:
1. 儲存現場。按下Home鍵10秒內直接殺死進程,並釋放記憶體

2. iOS支援的“多任務”。按下Home鍵轉入多任務狀態,保留在記憶體中,但只能系統允許的動作:
比如GPS,比如VoIP,比如Streaming Music等等。

3. 真正的案頭層級的多任務。只有Safari/Mail是,蘋果嫡系大都都不是。
這個層級的app在後台沒有任何限制動作。

無限制動作的程式,一會在使用者無察覺的情況下耗光電力,二會有安全上面的問題
順便提一句,後兩種佔用記憶體的app,也會在任意時間從記憶體中被砍掉,取決於你是
否動用了其它app而導致記憶體不足。
真正不會被砍掉的後台,只有蘋果那個通知系統。

 

1.實現長時間的背景工作

  IOS應用程式可以請求在後台啟動並執行特殊服務有:

     audio:在後台提供聲音播放功能,包括音頻流和播放視頻時的聲音

     location:在後台可以保持使用者的位置資訊

     voip:在後台使用VOIP功能

  這些應用程式並不連續的運行,但是會被系統架構在合適的時間喚醒,以實現這些服務。

2.在後台完成有限長度的任務   

在被終止之前的任意時間,應用程式會調用beginBackgroundTaskWithExpirationHandler:方法讓
系統給出額外的時間來完成一些需要在後台長時間執行的任務。 
(UIApplication的backgroundTimeRemaining屬性包含程式啟動並執行總時間)。
一般它的執行時間是應用程式轉入到背景600秒之內執行,超過600秒自動切 斷

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.