android 系統用棧的形式管理 activity , 當新的 activity 被建立是, 會被放置到棧頂, 這個 activity 會進入到執行狀態, 而前乙個 activity 則會被壓入棧, 直到新的 activity 退出, 否則不會出現在前台。
根據 android 文件, 每乙個 activity 都有四個狀態, 它們分別是:
下圖表示 activity 在這四種狀態之間切換的生命週期, 以及狀態切換時呼叫的對應的方法:
activity 生命週期中的各個方法描述如下:
多個 activity 之間採用的是棧道管理方式, 當使用者啟動新的 activity 時, 新啟動的 activity 位於棧頂,當使用者按後退按鈕時, 棧頂的 activity 被推出棧道並銷毀, 如下圖所示:
我們在上次建立的程式中新增 activity 的生命週期**, 並加入一些輸出, 以便清晰的理解:
public class mainactivity : activity
protected override void onstart()
protected override void onresume()
protected override void onpause()
protected override void onstop()
protected override void onrestart()
protected override void ondestroy()
}
mainactivity.oncreate
mainactivity.onstart
mainactivity.onresume
mainactivity.onpause
secondactivity.oncreate
secondactivity.onstart
secondactivity.onresume
mainactivity.onstop
點選返回按鈕, 返回 mainactivity , 得到的提示如下:
secondactivity.onpause
mainactivity.onrestart
mainactivity.onstart
mainactivity.onresume
secondactivity.onstop
secondactivity.ondestroy
secondactivity.isfinishing = true
再次點選「傳送」按鈕,啟動 secondactivity ,看到下面的提示(與第一次是一致的):
mainactivity.onpause
secondactivity.oncreate
secondactivity.onstart
secondactivity.onresume
mainactivity.onstop
secondactivity.onpause
secondactivity.onstop
secondactivity.onrestart
secondactivity.onstart
secondactivity.onresume
mainactivity.onpause
mainactivity.onstop
mainactivity.ondestroy
mainactivity.isfinishing = true
至此, 整個生命週期測試完成, 有了上面的測試, 應該可以對 android 的 activity 生命週期有乙個比較清楚的認識。 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 有四個重要的...