在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 有四個重要的...