尚學堂【官網】-西安Java培訓|c++培訓|Android培訓|安卓培訓|java視頻教程|軟件工程師|-西安雁塔尚學堂計算機學校
安卓資訊    首頁安卓操作系統手機安卓資訊

【Android開發】Android進程及其生命周期

www.zyopwk.live 發布人:java  |  來自:本站  |  發布時間:2017-09-08 16:44:00  |  點擊次數:3238    

  【Android開發】Android進程及其生命周期。Android系統會盡可能長的延續一個應用程序進程,但在內存過低的時候,仍然會不可避免需要移除舊的進程。為決定保留或移除一個進程,Android將每個進程都放入一個“重要性層次”中,依據則是它其中運行著的組件及其狀態。重要性最低的進程首先被消滅,然后是較低的,依此類推。重要性共分五層,依據重要性列表如下:

  一,前臺進程

  是用戶操作所必須的,任一時間下,僅有少數進程會處于前臺,僅當內存實在無法供給它們維持同時運行時才會被殺死。一般來說,在這種情況下,設備依然處于使用虛擬內存的狀態,必須要殺死一些前臺進程以用戶界面保持響應。

  Android會依據進程中當前活躍組件的重要程度來盡可能高的估量一個進程的級別。比如說,如果一個進程中同時有一個服務和一個可視的activity,則進程會被判定為可視進程,而不是服務進程。

  二,可視進程

  沒有前臺組件,但仍可被用戶在屏幕上所見。當滿足如下任一條件時,進程被認為是可視的:

  它包含著一個不在前臺,但仍然為用戶可見的activity(它的onPause()方法被調用)。這種情況可能出現在以下情況:比如說,前臺activity是一個對話框,而之前的activity位于其下并可以看到。

  它包含了一個綁定至一個可視的activity的服務。

  可視進程依然被視為是很重要的,非到不殺死它們便無法維持前臺進程運行時,才會被殺死。

  三,服務進程

  是由startService()方法啟動的服務,它不會變成上述兩類。盡管服務進程不會直接為用戶所見,但它們一般都在做著用戶所關心的事情(比如在后臺播放mp3或者從網上下載東西)。所以系統會盡量維持它們的運行,除非系統內存不足以維持前臺進程和可視進程的運行需要。

  四,背景進程

  包含目前不為用戶所見的activity(Activity對象的onStop()方法已被調用)。這些進程與用戶體驗沒有直接的聯系,可以在任意時間被殺死以回收內存供前臺進程、可視進程以及服務進程使用。一般來說,會有很多背景進程運行,所以它們一般存放于一個LRU(最后使用)列表中以確保最后被用戶使用的activity最后被殺死。如果一個activity正確的實現了生命周期方法,并捕獲了正確的狀態,則殺死它的進程對用戶體驗不會有任何不良影響。

  五,空進程

  不包含任何活動應用程序組件。這種進程存在的唯一原因是做為緩存以改善組件再次于其中運行時的啟動時間。系統經常會殺死這種進程以保持進程緩存和系統內核緩存之間的平衡。

  此外,一個進程的級別可能會由于其它進程依賴于它而升高。一個為其它進程提供服務的進程級別永遠高于使用它服務的進程。比如說,如果A進程中的內容提供者為進程B中的客戶端提供服務,或進程A中的服務為進程B中的組件所綁定,則A進程最低也會被視為與進程B擁有同樣的重要性。

  西安雁塔尚學堂計算機學校采用老師學生同步開發的互動教學模式,徹底突破了傳統的在教室教軟件的方式,完全解決了大學生們的動手能力問題,以及學習的參與性與趣味性。

學習【Android】有困難需要培訓可以加QQ3168098131交流咨詢,【西安尚學堂】每星期都有免費實戰試聽課等你來約。

尚學堂java培訓

       
當前文:【Android開發】Android進程及其生命周期
上一頁:未來前景最好的IT專業
下一頁:Android開發5大布局方式之一“線性布局”詳解
在線報名(*為必填項)
云南快乐十分开奖走势图