1. 程式人生 > >Activity生命週期和堆疊管理

Activity生命週期和堆疊管理

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將單獨使用一個任務棧

場景:打電話 、鬧鈴響

如果有理解不對的地方,廣大興趣愛好者提出來共同進步