Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發中進程等級相關

Android開發中進程等級相關

編輯:Android開發實例

  Android五個進程等級

  1、前台進程(Foreground process):
  用戶當前工作所需要的。一個進程如果滿足下列任何條件被認為是前台進程:

  正運行著一個正在與用戶交互的活動(Activity對象的onResume()方法已經被調用)。
  寄宿了一個服務,該服務與一個與用戶交互的活動綁定。
  有一個Service對象執行它的生命周期回調(onCreate()、onStart()、onDestroy())。
  有一個BroadcastReceiver對象執行他的onReceive()方法。

  在給定時間內僅有少數的前台進程存在。僅作為最後采取的措施他們才會被殺掉——如果內存太低以至於他們不能繼續運行。

  2、可視進程(Visible process):
  沒有任何前台組件,但是仍然能影響用戶在屏幕上看到東西。一個進程滿足下面任何一個條件都被認為是可視的:

  寄宿著一個不是前台的活動,但是它對用戶仍可見(它的onPause()方法已經被調用)。舉例來說,這可能發生在,如果一個前台活動在一個對話框(其他進程的)運行之後仍然是可視的,比如輸入法的彈出時。
  寄宿著一個服務,該服務綁定到一個可視的活動。

  一個可視進程被認為是及其重要的且不會被殺死,除非為了保持前台進程運行。

  3、服務進程(Service process):是一個運行著一個用startService()方法啟動的服務,並且該服務並沒有落入上面2種分類。雖然服務進程沒有直接關系到任何用戶可見的,它們通常做用戶關心的事(諸如在後台播放mp3或者從網絡上下載數據),因此系統保持它們運行,除非沒有足夠內存來保證所有的前台進程和可視進程。

  4、後台進程(Background process):是一個保持著一個當前對用戶不可視的活動(已經調用Activity對象的onStop()方法)(如果還有除了UI線程外其他線程在運行話,不受影響)。這些進程沒有直接影響用戶體驗,並且可以在任何時候被殺以收回內存用於一個前台、可視、服務進程。一般地有很多後台進程運行著,因此它們保持在一個LRU(least recently used,即最近最少使用,如果您學過操作系統的話會覺得它很熟悉,跟內存的頁面置換算法LRU一樣。)列表以確保最近使用最多的活動的進程最後被殺。

  5、空進程(Empty process):是一個沒有保持活躍的應用程序組件的進程。保持這個進程可用的唯一原因是作為一個cache以提高下次啟動組件的速度。系統進程殺死這些進程,以在進程cache和潛在的內核cache之間平衡整個系統資源。

  一個進程的排名因為其他進程依賴它而上升。一個進程服務其它進程,它的排名從不會比它服務的進程低。例如,進程A中的一個內容提供者服務進程B中的一個客戶,或者進程A中的一個服務綁定到進程B中的一個組件,進程A總是被認為比進程B重要。

  因為一個服務進程排名比後台活動的進程排名高,一個活動啟動一個服務來初始化一個長時間運行操作,而不是簡單地衍生一個線程——特別是如果操作很可能會拖垮活動(例如出現ANR)。這方面的例子是在後台播放音樂和上傳相機拍攝的圖片到一個網站。使用服務保證操作至少有“服務進程”的優先級,無論活動發生什麼情況。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved