溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android  Activity生命周期和堆棧管理的詳解

發(fā)布時(shí)間:2020-10-16 18:40:45 來源:腳本之家 閱讀:212 作者:lqh 欄目:移動(dòng)開發(fā)

Activity的生命周期

Activity是Android中的四大組件之一,也是最基本,最重要的組件,是android系統(tǒng)提供一個(gè)可視化的,能與用戶交換的組件。
系統(tǒng)提供的組件,不需要用戶實(shí)例化,用戶也不能實(shí)例化,是系統(tǒng)進(jìn)行回調(diào),例如web開發(fā)的servlet也是系統(tǒng)提供的,和android 的其他系統(tǒng)組件一樣。

那么不需要我們實(shí)例化我們?cè)趺从媚?,這些組件都有相同的特點(diǎn)就是:

  1.都需要在配置文件中注冊(cè)

  2.都需要自定義類去繼承系統(tǒng)的Api

  3.都有自己的生命周期

那么Activity的生命周期有那些方法呢:

  1.onCreate
  2.onStart
  3.onrestart
  4.onResume
  5.onpause
  6.onstop
  7.ondestroy

Activity總共有以上7個(gè)回調(diào)方法

Activiy總共有三種小的生命周期

場景一

一個(gè)Activity的開啟到銷毀

OnCreate---onStart----onResume------onPause-----Onstop---onDestroy 

這是一個(gè)完整的生命周期

場景二

A Activity 跳轉(zhuǎn)到 到 B Activity (BActivity是完全覆蓋AActivity)

AOnCretate-----AOnStart----AOnResume------AOnPause------BOnCreate-----BOnStart------BOnReSume ----AOnStop

B activity 返回到A Activity生命周期執(zhí)行的回調(diào)是:

BOnPause---AOnRestart--AOnResume---BOnstop---BOnDestory

場景三

A Activity跳轉(zhuǎn)到B Activity(B Activity 是一個(gè) 對(duì)話框形式的Activity 或者 BActivty是一個(gè)透明的)

AOnCretate-----AOnStart----AOnResume ------AOnPause------
BOnCreate-----BOnStart------BOnReSume ----

B activity 返回到A Activity生命周期執(zhí)行的回調(diào)是:

BOnPause---AOnResume---BOnstop---BOnDestory

場景四

手機(jī)的橫豎屏切換,android的生命周期方法的重新執(zhí)行,

    onPause
    onstop
    ondestroy
    oncreate
    onstart
    onresume

如果想橫豎屏切換時(shí),不重新走生命周期,需要清單為Activity配置屬性:configChanges
也可以設(shè)置屏幕 鎖定為橫屏或豎屏 ,screenOrientation:lanscape | portriant

2、Activity的四種狀態(tài)

運(yùn)行 onResume
暫停 onPause
停止 onStop
銷毀 onDestroy

3、Activity的三個(gè)生命周期

1>完整的 onCreate——onDestroy
2>可見的 onStart——onStop
3>活動(dòng)的 onResume——onPause

Activity的堆棧管理模式

  

 數(shù)據(jù)結(jié)構(gòu)
  隊(duì)列:先進(jìn)先出
  棧:先進(jìn)后出

  每打開一個(gè)Activity,將會(huì)入棧,退出一個(gè),將會(huì)出棧,采用棧的先進(jìn)后出結(jié)構(gòu)

啟動(dòng)模式

standard 標(biāo)準(zhǔn)啟動(dòng)

singleTop 單一棧頂

保證棧頂只有一個(gè)實(shí)例,任務(wù)棧中可能有很多實(shí)例
場景:瀏覽器 書簽

singleTask 單一任務(wù)棧

  保證 所在的任務(wù)棧 ,只有一個(gè)實(shí)例
  比如說設(shè)置 A 為此模式,保證整個(gè)任務(wù)棧只有A一個(gè)實(shí)例,如果棧頂有其他Activity,再打開A時(shí),將棧頂其他Activity全部出棧。

場景 如:webkit 內(nèi)核

singleInstance單一實(shí)例

  保證整個(gè)系統(tǒng)的棧中,只有一個(gè)實(shí)例
  比如說設(shè)置 A 為此模式,那么 A將單獨(dú)使用一個(gè)任務(wù)棧

場景:打電話 、鬧鈴響

如有疑問大家留言或者到社區(qū)討論,共同進(jìn)步,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI