回覆列表
  • 1 # 會辜負大家

    iOS後臺型別可以分為三種:

    1.儲存現場。按下Home鍵10秒內直接殺死程序,並釋放記憶體,大多數第三方APP(非內建APP)都屬於此類,APP會儲存關閉時的狀態以便儲存資料和下次開啟時恢復。

    2.iOS系統支援的“多工”。按下Home鍵轉入多工狀態,保留在記憶體中,但只能進行系統允許的動作:比如GPS,比如VoIP,比如流媒體播放等等,例如開啟一個第三方音樂播放器,播放歌曲並按Home推出,音樂仍可以繼續播放。

    3.真正的桌面級別的多工。只有Safari/Mail是,蘋果嫡系大都都不是。這個級別的APP在後臺沒有任何限制動作。

    無限制後臺動作的程式,一會在使用者無察覺的情況下耗光電力,二會有安全上面的問題,所以蘋果杜絕了絕大多數APP的後臺動作,並且引入了推送伺服器的概念。

    由於iOS不允許大多數的APP在後臺實時執行,那麼例如QQ這類軟體是如何實現實時聊天的呢?IOS的推送(APNS,即ApplePushNotificationService)依託iOS系統常駐程序運作,全域性接管所有APP的訊息推送,所以可看作是獨立於應用之外,而且是裝置和蘋果伺服器之間的通訊,而非應用的提供商伺服器。例如,你的QQ好友給你發了一條訊息,QQ伺服器(Provider)會把這條訊息轉發給蘋果對應的伺服器(APNs)發出通知,然後再中轉傳送到你的裝置之上。當你接收到通知,開啟應用,QQ這個APP才開始從騰訊伺服器接收資料,跟你之前看到通知裡內容一樣,但卻是經由兩個不同的通道而來。

    我們再來看看Android:

    當程序被切換到後臺時,系統暫停程序。不消耗CPU資源,只在記憶體保留執行狀態,並根據應用本身設定優先順序:

    七個優先順序:

    前臺程序。顧名思義,你當前螢幕正在顯示的程序。

    可見程序。隨時需要待命的程序,例如隨時需要召喚出來的輸入法。

    主要服務。系統的必須服務,例如電話。

    次要服務。與系統關係密切的服務,例如Gmail的郵件推送服務。

    後臺程序。同樣顧名思義,就是剛剛被你切換到後臺的程序。

    內容供應節點。沒有應用實體,僅提供內容供別的應用去用的,比如日曆供應節點,郵件供應節點等。

    空程序。沒有任何東西在執行的程序,有些應用在退出後,依然會在程序中駐留一個空程序,這樣的作用是提高該應用下次的啟動速度或記錄一些歷史資訊。

    正常的Android應用在退出之後要不就成為後臺程序,要不就成為空程序。這些程序已經暫停了執行,不佔用CPU資源和電量。在記憶體不足,使用者需要開啟另外的應用時,就會自動清除掉,所以完全不需要清理記憶體。

    那些不正常的應用,就會在後臺開各種主要服務和次要服務,導致使用者退出後繼續執行,最常見的例子就是各種佔據工作列的xx電池助手、xx手機助手……

    我們仍以QQ為例,QQ在後臺時會保留相關程序以及服務,並且與QQ伺服器實時通訊以便獲得好友傳送來的訊息。

    iOS的聰明之處在於系統整合的推送服務接管了所有APP的推送訊息,開發APP時只需遵循這一API介面即可,任何iOS裝置如iPhone可以在這個統一的系統服務上獲得各類APP的推送訊息,佔用資源小巧,並且省電。而Android上如果有100個APP需要獲取通知訊息,就可能需要在後臺執行100個程序或者服務,這對記憶體以及處理器的佔用是相當巨大的,而且對電池的耗費也是比iOS更為嚴重。

  • 中秋節和大豐收的關聯?
  • 孕婦吃什麼菜容易消化呢?