新聞中心
Android是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),是由2007年由Google開發(fā)而成,希望借助建立標(biāo)準(zhǔn)化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。

創(chuàng)新互聯(lián)公司擁有十多年成都網(wǎng)站建設(shè)工作經(jīng)驗,為各大企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),對于網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、App定制開發(fā)、wap網(wǎng)站建設(shè)(手機版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、空間域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等網(wǎng)站化運作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項目的能力。
Android盡量不去中止一個進程,但是當(dāng)內(nèi)存不足的時候它必須中止一些老的線程。為了決定哪些進程保留哪些進程中止,Android給這些進程一個“重要級”,這個級別取決于進程中的組件和組件的狀態(tài)。最不重要的進程先被中止,然后是次不重要的,依此類推。重要級別有5個程度,以下詳細(xì)說明:
1.有一個用戶正在交互的activity, (Activity對象的onResume()方法被調(diào)用). 有一個響應(yīng)用戶正在交互的activity的sercie.有一個 Service 對象正在執(zhí)行生命周期的方法 (onCreate(), onStart(), or onDestroy()).有一個 BroadcastReceiver 對象在執(zhí)行onReceive() 方法。
只有一些前臺Android進程可以在任何時候都存在。他們是***一個被結(jié)束的――當(dāng)內(nèi)存低到根本連他們都不能運行的時候。一般來說,在這種情況下,設(shè)備會進行內(nèi)存調(diào)度,中止一些前臺進程來保持對用戶交互的響應(yīng)。.
2.見進程不包含前臺的組件但是會在屏幕上顯示。如果滿足了以下任意一個條件,進程就可以視為可見:有一個非前臺的但是仍然對用戶可見的activity。( onPause() 方法被調(diào)用). 這種情況發(fā)生于,例如,當(dāng)前前臺的activity是一個對話框,上一個activity還是可見的。 具有一個綁定到可見activity的service。一個可見的進程是的重要程度很高,除非前臺進程需要獲取它的資源,不然不會被中止。
3.服務(wù)進程 中運行著一個通過 startService() 方法啟動的service,這個service不屬于上面提到的2種更高重要性的,service所在的進程雖然對用戶不是直接可見的,但是他們執(zhí)行了用戶非常關(guān)注的任務(wù)(比如播放mp3,從網(wǎng)絡(luò)下載數(shù)據(jù))。只要前臺進程和可見進程有足夠的內(nèi)存,系統(tǒng)不會回收他們。
4.后臺進程 中運行著一個對用戶不可見的activity(調(diào)用過 onStop() 方法).這些進程對用戶體驗沒有直接的影響,可以在服務(wù)進程、可見進程、前臺進程需要內(nèi)存的時候回收。通常。
系統(tǒng)中會有很多不可見進程在運行,他們被保存在LRU (least recently used) 列表中,以便內(nèi)存不足的時候被***時間回收。如果一個activity正確的執(zhí)行了它的生命周期,關(guān)閉這個Android進程對于用戶體驗沒有太大的影響。
5.空進程 中未運行任何程序組件。運行這些進程的唯一原因是作為一個緩存,縮短下次程序需要重新使用的啟動時間。系統(tǒng)經(jīng)常中止這些進程,這樣可以調(diào)節(jié)程序緩存和系統(tǒng)緩存的平衡。.Android進程的重要性評級的時候,選取它***的級別。例如一個進程中有一個service和可以可見的activity,則Android將此進程評判為“可見進程”而非“服務(wù)進程?!?/p>
另外,當(dāng)被另外的一個進程依賴的時候,某個進程的級別可能會增高。一個為其他進程服務(wù)的進程永遠(yuǎn)不會比被服務(wù)的進程重要級低。例如,進程A中的content provider 正在為客戶進程B提供數(shù)據(jù),或者A中的service綁定到進程B中,那么A的重要級最少都是B的重要級。
因為服務(wù)進程比后臺activity進程重要級高,因此一個要進行耗時工作的acitvity***啟動一個service來做這個工作。而不是開啟一個子進程――特別是這個操作需要的時間比activity存在的時間還要長的時候。例如,在后臺播放音樂,向網(wǎng)上上傳攝像頭拍到的圖片。
使用service可以使進程最少獲取到“Android進程”級別的重要級,而不用考慮acrivity目前是什么狀態(tài)。向 Broadcast receiver lifecycle 章節(jié)講到的, broadcast receivers做費時的工作的時候,也應(yīng)該啟用一個服務(wù)而不是開一個線程。
【編輯推薦】
- Android應(yīng)用程序組建原理深入剖析
- Android SMS短信服務(wù)相關(guān)概念簡述
- PythonAndroid數(shù)據(jù)庫相關(guān)代碼解讀
- PythonAndroid安裝卸載程序具體操作方法解析
- Android應(yīng)用程序的四個關(guān)鍵點
標(biāo)題名稱:更快更好的學(xué)習(xí)Android進程
文章路徑:http://www.5511xx.com/article/cdcpsjg.html


咨詢
建站咨詢
