編輯: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)。這方面的例子是在後台播放音樂和上傳相機拍攝的圖片到一個網站。使用服務保證操作至少有“服務進程”的優先級,無論活動發生什麼情況。
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
本文實例講述了Android實現偵聽電池狀態顯示、電量及充電動態顯示的方法,是Android應用程序開發中非常常用的重要功能。分享給大家供大家參考之用。具體方法如
在Andoird使用Android自帶的那些組件,像SlidingDrawer和DrawerLayout都是抽屜效果的菜單,但是在項目很多要實現的功能都收到And
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩