android對於所有程序的處理態度都是盡可能不殺死。然而,資源總共就那麼多,要是對所有程序都保持寬容的話,資源總會有消耗殆盡的時候。因此,在記憶體不足的情況,android系統需要根據一定的策略,選擇性的殺死部分程序。這個策略就是對所有的程序標記優先順序,優先順序低的先殺死。
android將程序的優先順序分為5個層次,按照優先順序由高到低排列如下:
前台程序(foreground process)。它表明使用者正在與該程序進行互動操作,android系統依據下面的條件來將乙個程序標記為前台程序:
該程序持有乙個使用者正在與其互動的activity(也就是這個activity的生命週期方法走到了onresume()方法)。
該程序持有乙個service,並且這個service與乙個使用者正在互動中的activity進行繫結。
該程序持有乙個前台執行模式的service(也就是這個service呼叫了startforegroud()方法)。
該程序持有乙個正在執行生命週期方法(oncreate()、onstart()、ondestroy()等)的service。
該程序持有乙個正在執行onreceive()方法的broadcastreceiver。
一般情況下,不會有太多的前台程序。殺死前台程序是作業系統最後無可奈何的做法。當記憶體嚴重不足的時候,前台程序一樣會被殺死。
可見程序(visible process)。它表明雖然該程序沒有持有任何前台元件,但是它還是能夠影響到使用者看得到的介面。android系統依據下面的條件將乙個程序標記為可見程序:
該程序持有乙個非前台activity,但這個activity依然能被使用者看到(也就是這個activity呼叫了onpause()方法)。例如,當乙個activity啟動了乙個對話方塊,這個activity就被對話方塊擋在後面。
該程序持有乙個與可見(或者前台)activity繫結的service。
服務程序(service process)。除了符合前台程序和可見程序條件的service,其它的service都會被歸類為服務程序。
後台程序(background process)。持有不可見activity(呼叫了onstop()方法)的程序即為後台程序。通常情況下都會有很多後台程序,當記憶體不足的時候,在所有的後台程序裡面,會按照lru(最近使用)規則,優先**最長時間沒有使用過的程序。
空程序(empty process)。不持有任何活動元件的程序。保持這種程序只有乙個目的,就是為了快取,以便下一次啟動該程序中的元件時能夠更快響應。當資源緊張的時候,系統會平衡程序快取和底層的核心快取情況進行**。
如果乙個程序同時滿足上述5種優先順序中的多個等級條件,android系統會優先選取其中最高的等級作為該程序的優先順序。例如,乙個程序持有乙個service(服務程序等級)和乙個前台activity(前台程序等級),那麼作業系統會將這個程序標記為前台程序。
另外需要注意的是,如果乙個程序為另外乙個程序提供服務,那麼這個程序的優先順序不會低於享受服務的程序。例如,假設程序a中的content provider為程序b提供服務,或者程序a中有乙個service與程序b中的元件程序繫結,那麼程序a的優先順序至少要與程序b一致,或者高於程序b。
壓力管道級別如何劃分
低壓管道 公稱壓力不超過2.5mpa 中壓管道 公稱壓力4 6.4mpa 高壓管道 公稱壓力10 100mpa 超高壓管道 公稱壓力超過100mpa 壓力管道級別的劃分 6.1 長輸管道為ga 類,級別劃分為 6.1.1 符合下列條件之一的長輸管道為ga1 級 a 輸送有毒 可燃 易爆氣體介質,設計...
Restful 級別劃分以及HATEOAS是什麼?
restful簡介 rest是一種軟體架構風格 設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。而滿足這些約束條件和原則的應用程式或設計就是 restful。restful 級別劃分 re...
洪水預警級別及劃分確定
洪水災害預警級別按洪水情況 影響程度等劃分為四個級別 級 特別嚴重 級 嚴重 級 較重 級 一般 依次用紅色 橙色 黃色和藍色表示。一 級預警 預警圖示為紅色 當 預報可能發生以下情況之一 1 北江 武江 湞江 滃江幹流發生50年一遇或以上洪水 2 大 中型水庫及縣城上游重點小型水庫發生重大險情。二...