亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android應(yīng)用程序的生命周期

系統(tǒng) 2128 0

首先我們看一下 Android 應(yīng)用程序的生命周期圖:

Android應(yīng)用程序的生命周期

在大部份情況下,每個 Android 應(yīng)用都將運行在自己的 Linux 進程當中。當這個應(yīng)用的某些代碼需要執(zhí)行時,進程就會被創(chuàng)建,并且將保持運行,直到該進程不再需要,而系統(tǒng)需要釋放它所占用的內(nèi)存,為其他應(yīng)用所用時,才停止。
Android 一個重要并且特殊的特性就是,一個應(yīng)用的進程的生命周期不是由應(yīng)用自身直接控制的,而是由系統(tǒng),根據(jù)運行中的應(yīng)用的一些特征來決定的,包括:這些應(yīng)用對用戶的重要性、系統(tǒng)的全部可用內(nèi)存。
對于應(yīng)用開發(fā)者來說,理解不同的應(yīng)用組件(特別是 Activity Service Intent Receiver )對應(yīng)用進程的生命周期的影響,這是非常重要的。如果沒有正確地使用這些組件,將會導(dǎo)致當應(yīng)用正在處理重要的工作時,進程卻被系統(tǒng)消毀的后果。
對于進程生命周期,一個普遍的錯誤就是:當一個 Intent Receiver 在它的 onReceiveIntent() 方法中,接收到一個 intent 后,就會從這個方法中返回。而一旦從這個方法返回后,系統(tǒng)將會認為這個 Intent Receiver 不再處于活動狀態(tài)了,也就會認為它的宿主進程不需要了(除非宿主進程中還存在其它的應(yīng)用組件)。從而,系統(tǒng)隨時都會消毀這個進程,收回內(nèi)存,并中止其中還在運行的子線程。問題的解決辦法就是,在 IntentReceiver 中,啟動一個 Service ,這樣系統(tǒng)就會知道在這個進程中,還有活動的工作正在執(zhí)行。
為了決定在內(nèi)存不足情況下消毀哪個進程, Android 會根據(jù)這些進程內(nèi)運行的組件及這些組件的狀態(tài),把這些進程劃分出一個“重要性層次”。這個層次按順序如下:
1、 前端進程 是擁有一個顯示在屏幕最前端并與使用者做交互的 Activity (它的 onResume 已被調(diào)用)的進程,也可能是一個擁有正在運行的 IntentReceiver (它的 onReceiveIntent ()方法正在運行)的進程。在系統(tǒng)中,這種進程是很少的,只有當內(nèi)存低到不足于支持這些進程的繼續(xù)運行,才會將這些進程消毀。通常這時候,設(shè)備已經(jīng)達到了需要進行內(nèi)存整理的狀態(tài),為了保障用戶界面不停止響應(yīng),只能消毀這些進程;
2、 可視進程 是擁有一個用戶在屏幕上可見的,但并沒有在前端顯示的 Activity (它的 onPause 已被調(diào)用)的進程。例如:一個以對話框顯示的前端 activity 在屏幕上顯示,而它后面的上一級 activity 仍然是可見的。這樣的進程是非常重要的,一般不會被消毀,除非為了保障所有的前端進程正常運行,才會被消毀。
3、 服務(wù)進程 是擁有一個由 startService ()方法啟動的 Service 的進程。盡管這些進程對于使用者是不可見的,但他們做的通常是使用者所關(guān)注的事情(如后臺 MP3 播放器或后臺上傳下載數(shù)據(jù)的網(wǎng)絡(luò)服務(wù))。因此,除非為了保障前端進程和可視進程的正常運行,系統(tǒng)才會消毀這種進程。
4、 后臺進程 是擁有一個用戶不可見的 Activity onStop ()方法已經(jīng)被調(diào)用)的進程。這些進程不直接影響用戶的體驗。如果這些進程正確地完成了自己的生命周期(詳細參考 Activity 類),系統(tǒng)會為了以上三種類型進程,而隨時消毀這種進程以釋放內(nèi)存。通常會有很多這樣的進程在運行著,因些這些進程會被保存在一個LRU列表中,以保證在內(nèi)存不足時,用戶最后看到的進程將在最后才被消毀。
5、 空進程 是那些不擁有任何活動的應(yīng)用組件的進程。保留這些進程的唯一理由是,做為一個緩存,在它所屬的應(yīng)用的組件下一次需要時,縮短啟動的時間。同樣的,為了在這些緩存的空進程和底層的核心緩存之間平衡系統(tǒng)資源,系統(tǒng)會經(jīng)常消毀這些空進程。

當要對一個進程進行分類時,系統(tǒng)會選擇在這個進程中所有活動的組件中重要等級最高的那個做為依據(jù)。可以參考 Activity Service IntentReceiver 文檔,了解這些組件如何影響進程整個生命周期的更多細節(jié)。這些類的文檔都對他們?nèi)绾斡绊懰麄兯鶎俚膽?yīng)用的整個生命周期,做了詳細的描述。

Android應(yīng)用程序的生命周期


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产片久久 | 国产成+人+综合+欧美 亚洲 | 最新四虎4hu影库地址在线 | 俺来也欧美亚洲a∨在线 | 亚洲视频中文字幕在线观看 | 欧美日韩永久久一区二区三区 | 国产精品视频公开费视频 | 日韩视频观看 | 美女一级a毛片免费观看 | 天天做天天欢天天爽 | 日本免费三区 | 日韩欧美在线不卡 | 五月天亚洲婷婷 | 日韩欧美亚洲一区 | 日本人在线看片 | 黄 色 免费网 站 成 人 | 国产成人精品免费久久久久 | 香蕉一区二区 | 午夜一级大片 | 色狠狠综合 | 91年精品国产福利线观看久久 | 中国国产成人精品久久 | 一级黄色影片 | 亚洲精品成人一区二区www | 婷婷综合在线 | 日日噜噜夜夜狠狠tv视频免费 | 国产人伦视频在线观看 | 视频在线日韩 | 成人亚洲国产综合精品91 | 婷婷综合 在线 | 久久一区二区精品综合 | 色综合一本到久久亚洲91 | 99热国内精品 | 色综合天天综合网国产成人 | 日韩综合一区 | 日韩在线一区二区三区 | 精品一区二区三区亚洲 | 国产精品一在线观看 | 亚洲精品久久久中文字幕 | 狠狠色狠狠色很很综合很久久 | 久久久久久久久久免观看 |