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

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


咨詢
建站咨詢
