學習 元件生命週期(3)

2022-03-19 03:08:04 字數 1642 閱讀 8110

android系統試圖盡可能長地保持乙個應用程式程序,但是當記憶體低時它最終還是需要移除舊的程序。為了決定保持哪個程序及殺死哪個進

程,android將每個程序放入乙個基於執行於其中的元件的重要性等級和這些元件的狀態。重要性最低的程序首先被殺死,然後是次低,以此類推。總共有5

個層次等級。下列清單按重要性順序列出:

前台程序,使用者當前工作所需要的。乙個程序如果滿足下列任何條件被認為是前台程序: 它正執行著乙個正在與使用者互動的活動(activity物件的onresume()方法已經被呼叫)。

它寄宿了乙個服務,該服務與乙個與使用者互動的活動繫結。

它有乙個service物件執行它的生命週期**(oncreate()、onstart()、ondestroy())。

它有乙個broadcastreceiver物件執行他的onreceive()方法。

在給定時間內僅有少數的前台程序存在。僅作為最後採取的措施他們才會被殺掉——如果記憶體太低以至於他們不能繼續執行。一般來說,就在那時,裝置達到乙個記憶體???狀態,因此殺掉某些前台程序以保持使用者介面響應。

可視程序,他沒有任何前台元件,但是仍然能影響使用者在螢幕上看到東西。乙個程序滿足下面任何乙個條件都被認為是可視的: 它寄宿著乙個不是前台的活動,但是它對使用者仍可見(它的onpause()方法已經被呼叫)。舉例來說,這可能傳送在,如果乙個前台活動是乙個對話方塊且執行之前的活動在其後面仍可視。

它寄宿著乙個服務,該服務繫結到乙個可視的活動。

乙個可視程序被認為是及其重要的且不會被殺死,除非為了保持前台程序執行。

後台程序,是乙個保持著乙個當前對使用者不可視的活動(已經呼叫activity物件的onstop()方

法)。這些程序沒有直接影響使用者體驗,並且可以在任何時候被殺以收回記憶體用於乙個前台、可視、服務程序。一般地有很多後台程序執行著,因此它們保持在乙個

lru(least recently

used,即最近最少使用,如果您學過作業系統的話會覺得它很熟悉,跟記憶體的頁面置換演算法lru一樣。)列表以確保最近使用最多的活動的程序最後被殺。如

果乙個活動執行正確地執行它的生命週期方法,且捕獲它當前的狀態,殺掉它對使用者的體驗沒有有害的影響。

空程序,是乙個沒有保持活躍的應用程式元件的程序。保持這個程序可用的唯一原因是作為乙個cache以提高下次啟動元件的速度。系統程序殺死這些程序,以在程序cache和潛在的核心cache之間平衡整個系統資源。

android

把程序標記為它可以的最高端,即程序中活躍的元件中重要性最高的那個(選取重要性最高的那個作為程序的重要性級別)。例如,有乙個程序寄宿著乙個服務和一

個可視活動,程序的級別被設定為可視程序級別,而不是服務程序級別(因為可視程序級別比服務程序級別高)。

此外,乙個程序的排名因為其他程序依賴它而上公升。乙個程序服務其它程序,它的排名從不會比它服務的程序低。例如,程序a中的乙個內容提供者服務程序b中的乙個客戶,或者程序a中的乙個服務繫結到程序b中的乙個元件,程序a總是被認為比程序b重要。

因為乙個執行乙個服務程序排名比乙個執行後台活動的程序排名高,乙個活動啟動乙個服務來初始化乙個長時間執行操作,而不是簡單地衍生乙個執行緒——特別是如果

況。

元件生命週期

三大階段 失效階段,提交階段,度量階段 失效階段 對元件屬性setter函式中,若有發生改變,則標記屬性失效,為了防止多次呼叫setter而導致頻繁更改屬性,所以呼叫屬性失效函式,當當前ui存放進 layoutmannger的失效佇列中,並新增layoutmannger的延遲偵聽,在下一幀才進行相應...

元件生命週期

元件生命週期指的是元件從建立到銷毀的過程,在這個過程中的一些不同的階段,vue會呼叫指定的一些元件方法 基本生命週期函式有下面幾個階段 每乙個階段都對應著 之前 和 之後 兩個函式 beforecreate 初始化階段,應用不多 created 在例項建立完成後被立即呼叫,該階段完成了對data中的...

元件生命週期

元件生命週期 react component通過其定義的幾個函式來控制項在生命週期的各個階段的動作。constructor props,context 建構函式,在建立元件的時候呼叫一次。void componentwillmount 在元件掛載之前呼叫一次。如果在這個函式裡面呼叫setstate,...