Activity生命週期和堆疊管理
阿新 • • 發佈:2018-12-13
Activity的生命週期
Activity是android中的四大元件之一,也是最基本,最重要的元件,是android系統提供一個視覺化的,能與使用者交換的元件。 系統提供的元件,不需要使用者例項化,使用者也不能例項化,是系統進行回撥,例如web開發的servlet也是系統提供的,和android 的其他系統元件一樣。 那麼不需要我們例項化我們怎麼用呢,這些元件都有相同的特點就是:
1.都需要在配置檔案中註冊
2.都需要自定義類去繼承系統的Api
3.都有自己的生命週期
那麼Activity的生命週期有那些方法呢:
1.onCreate 2.onStart 3.onrestart 4.onResume 5.onpause 6.onstop 7.ondestroy
Activity總共有以上7個回撥方法
- 1
Activiy總共有三種小的生命週期
場景一
一個Activity的開啟到銷燬
OnCreate---onStart----onResume------onPause-----Onstop---onDestroy
- 1
這是一個完整的生命週期
場景二 A Activity 跳轉到 到 B Activity (BActivity是完全覆蓋AActivity)
AOnCretate-----AOnStart----AOnResume------AOnPause------BOnCreate-----BOnStart------BOnReSume ----AOnStop
- 1
B activity 返回到A Activity生命週期執行的回撥是:
BOnPause---AOnRestart--AOnResume---BOnstop---BOnDestory
- 1
場景三
A Activity跳轉到B Activity(B Activity 是一個 對話方塊形式的Activity 或者 BActivty是一個透明的)
AOnCretate-----AOnStart----AOnResume ------AOnPause------
BOnCreate-----BOnStart------BOnReSume ----
- 1
- 2
B activity 返回到A Activity生命週期執行的回撥是:
BOnPause---AOnResume---BOnstop---BOnDestory
- 1
場景四 手機的橫豎屏切換,android的生命週期方法的重新執行,
onPause
onstop
ondestroy
oncreate
onstart
onresume
如果想橫豎屏切換時,不重新走生命週期,需要清單為Activity配置屬性:configChanges 也可以設定螢幕 鎖定為橫屏或豎屏 ,screenOrientation:lanscape | portriant
2、Activity的四種狀態
執行 onResume
暫停 onPause
停止 onStop
銷燬 onDestroy
3、Activity的三個生命週期
1>完整的 onCreate——onDestroy
2>可見的 onStart——onStop
3>活動的 onResume——onPause
Activity的堆疊管理模式
資料結構
佇列:先進先出
棧:先進後出
每開啟一個Activity,將會入棧,退出一個,將會出棧,採用棧的先進後出結構
啟動模式
standard 標準啟動
singleTop 單一棧頂
保證棧頂只有一個例項,任務棧中可能有很多例項
場景:瀏覽器 書籤
singleTask 單一任務棧
保證 所在的任務棧 ,只有一個例項
比如說設定 A 為此模式,保證整個任務棧只有A一個例項,如果棧頂有其他Activity,再開啟A時,將棧頂其他Activity全部出棧。
場景 如:webkit 核心
singleInstance單一例項
保證整個系統的棧中,只有一個例項
比如說設定 A 為此模式,那麼 A將單獨使用一個任務棧
場景:打電話 、鬧鈴響
如果有理解不對的地方,廣大興趣愛好者提出來共同進步