Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android中進程生命周期的優先級,android生命周期

Android中進程生命周期的優先級,android生命周期

編輯:關於android開發

Android中進程生命周期的優先級,android生命周期


“我們不是生產者,我只是大自然的搬運工。”

學習Android最好的途徑當然是強大的官方文檔了,其中在Processes and Threads一節中對於進程生命周期淘汰優先級,有著詳細的介紹。原文如下:

Process lifecycle

The Android system tries to maintain an application process for as long as possible, but eventually needs to remove old processes to reclaim memory for new or more important processes. To determine which processes to keep and which to kill, the system places each process into an "importance hierarchy" based on the components running in the process and the state of those components. Processes with the lowest importance are eliminated first, then those with the next lowest importance, and so on, as necessary to recover system resources.

上文大致意思就是說Android系統會盡量維持進程的存在,但畢竟資源有限,當系統資源告急的時候會淘汰一部分進程。淘汰順序的憑據就是系統進程的優先級了,優先級越高越不容易被殺死,反之亦然。系統總共為進程分了五個優先級,如下(原文後附筆者融合個人理解的簡譯):

一、前台進程(進程滿足如下任一條件即為前台進程):

1. 擁有 一個執行了onresume方法正在與用戶交互(獲得焦點)的Activity
2. 擁有一個service,這個Service跟正在與用戶交互的Activity進行了綁定
3. 擁有一個Service,這個Service調用了startForeground()方法
4. 擁有一個正在執行onCreate()、onStart()或者onDestroy()方法中的任意一個的Service
5. 擁有一個正在執行onReceive方法的BroadcastReceiver

 

二、可見進程:

1. 擁有一個執行了onPause方法,但仍然可見的Activity
2. 擁有一個Service,這個Service跟一個可見的或前台的Activity綁定了

 

三、服務進程:

擁有一個通過startService方法啟動的Service的進程

 

四、後台進程:

擁有一個後台Activity(onStop方法被調用)的進程

 

五、空進程:

沒有擁有任何活動的應用組件的進程,也就是沒有任何Service和Activity在運行

 

另外,還有一些需要補充的,當一個進程滿足多個進程條件時,當然是取優先級更高的為准,比如一個進程同時滿足前台進程和服務進程的條件,這個進程就是個前台進程,這點很好理解。另外,進程的優先級也不是一成不變的,而且有時候會隨著一些相關的因素而發生改變;比如,某進程A滿足前台進程的第二個條件,進程A擁有一個service,這個Service跟正在與用戶交互的Activity進行了綁定;當這個Activity變成可見狀態了,進程A便不再滿足前台進程的條件,進而因滿足可見進程的第二個條件,進程A變成了可見進程。總之,在掌握了基本概念之後,需要細心的分析具體的情況,方能得出正確的判斷。

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