activity的生命週期

2021-06-20 17:36:12 字數 1971 閱讀 2281

在android中

activity主要的三種狀態:

running(執行):在螢幕前台(位於當前任務堆疊的頂部)

paused(暫停):失去焦點但仍然對使用者可見(覆蓋activity可能是透明或未完全遮擋)

stopped(停止):完全被另乙個activity覆蓋

而在activity中,有下面這幾個方法

@override

protected void onstart()

@override

protected void onresume()

@override

protected void onrestart()

@override

protected void onpause()

@override

protected void onstop()

@override

protected void ondestroy()

當出現下列事件時,activity中方法的執行順序如下。

1  進入activity

oncreate  -> onstart  ->  onresume

2  back鍵

onpause -> onstop -> ondestroy

3  home鍵

home鍵退出:onpause -> onstop

home鍵回來:onrestart ->  onstart -> onresume  

4  休眠/恢復

休眠:  onpause

恢復:  onresume

5  旋轉螢幕

未設定android:configchanges:

onpause  ->  onstop  ->  ondestory  ->  oncreate  -> onstart  ->  onresume

設定了android:configchanges="orientation|keyboardhidden":

不會觸發生命週期方法,參見文章這裡。

6  來電

來電,顯示來電介面:

onpause  ->  onstop

關閉**介面,重新回到當前activity:

onrestart ->  onstart -> onresume

7  其他activity

進入下乙個activity:

onpause  ->  onstop

從其他activity返回至當前acitivity:

onrestart ->  onstart -> onresume

在此配上一張圖,可以更清楚地了解activity的生命週期

在專案中的應用如下:

當我傳送一條訊息時,如圖

傳送完了之後,我們要把他切換到主訊息介面,執行下面的**

finish();
結束當前的activity,切換到主訊息介面時,按照上面的知識點,我們知道activity的執行順序是

onrestart ->  onstart -> onresume

而我們傳送了一條訊息,要在主訊息介面中重新整理一下,重新接收伺服器中的訊息,所以我在主訊息介面activity的onresume中呼叫了重新整理方法

protected void onresume()
這樣一來就可以保證了每次發完資訊後,可以立刻與伺服器互動下資訊,而不用自己手動去點下重新整理按鈕。

Activity生命週期

oncreate 設定activity所使用的布局檔案 按鈕繫結 等靜態設定操作 onstart 該activity能被我們看到的時候就會呼叫onstart onresume 能夠獲得使用者焦點 onpause 啟動另外乙個activity的時候就會呼叫第乙個activity的該方法 onstop ...

activity生命週期

乙個activity的啟動順序 oncreate onstart onresume 當另乙個activity啟動時 第乙個activity onpause 第二個activity oncreate onstart onresume 第乙個activity onstop 當返回到第乙個activity...

Activity 生命週期

activities 在系統中是以 activity 棧的形式被管理的。當乙個新的 activity 啟動時,它將會被放到棧的頂部並變成 running activity 上乙個activity 會被至於它的下面,在新 activity 存在期間它都不會到前端來。乙個 activity 有四個重要的...