安卓:活動(dòng)的生命周期

安卓:活動(dòng)的生命周期

在安卓中, 活動(dòng)的生命周期可以歸納為: 1條棧第喳、4種狀態(tài)赤套、7個(gè)狀態(tài)轉(zhuǎn)化回調(diào)函數(shù)抵知。

作者?Bryce Chen

0x00 返回棧

0x01 活動(dòng)狀態(tài)

0x02 狀態(tài)轉(zhuǎn)換的回調(diào)函數(shù)

0x03 例子


0x00 返回棧

棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)堤魁,每當(dāng)我們啟動(dòng)了一個(gè)新的活動(dòng)耕魄,它會(huì)在返回棧中入棧,并處于棧頂?shù)奈恢弥ぞ拧W匀坏厣静颍忍幱跅m數(shù)幕顒?dòng)會(huì)被新的活動(dòng)”壓住”。

而每當(dāng)我們按下Back鍵或調(diào)用finish()方法去銷毀一個(gè)活動(dòng)時(shí)愧怜,處于棧頂?shù)幕顒?dòng)會(huì)出棧呀页,這時(shí)前一個(gè)入棧的活動(dòng)就會(huì)重新登頂。

處于棧頂?shù)幕顒?dòng)會(huì)被顯示給用戶拥坛,提供可交互的操作狀態(tài)蓬蝶。


新的活動(dòng)將壓入返回棧



0x01 活動(dòng)狀態(tài)

1.運(yùn)行狀態(tài)

處于運(yùn)行狀態(tài)的活動(dòng),是擺在用戶面前的活動(dòng)猜惋。此時(shí)這個(gè)活動(dòng)處于可交互的狀態(tài)丸氛,能夠響應(yīng)用戶的觸摸操作。這時(shí)著摔,活動(dòng)在返回棧的位置就是棧頂缓窜。

2.暫停狀態(tài)

用戶可見(jiàn)的、卻不可交互的活動(dòng)谍咆,就處于暫停狀態(tài)禾锤。例如此時(shí)的棧頂是一個(gè)對(duì)話框形式的活動(dòng),由于它只會(huì)占用屏幕中間的部分區(qū)域卧波,所以底下那個(gè)活動(dòng)就是可見(jiàn)的。此時(shí)的活動(dòng)是不可交互的庇茫,換言之港粱,對(duì)用戶的觸摸點(diǎn)擊"沒(méi)有反應(yīng)”男旗。此時(shí)摄狱,活動(dòng)不在棧頂了。

3.停止?fàn)顟B(tài)

用戶對(duì)活動(dòng)完全不可見(jiàn)的時(shí)候歧蒋,活動(dòng)就進(jìn)入了停止?fàn)顟B(tài)宁炫〕ナ铮活動(dòng)需由暫停狀態(tài)進(jìn)入停止?fàn)顟B(tài)。很多時(shí)候是新的活動(dòng)完全覆蓋了原活動(dòng)羔巢,用戶感覺(jué)到了”頁(yè)面的切換"望忆,那么該活動(dòng)從運(yùn)行態(tài)罩阵,中間暫停態(tài)幾乎不停留,進(jìn)入到停止態(tài)启摄。

4.銷毀狀態(tài)

當(dāng)一個(gè)活動(dòng)從返回棧中移除后就變成了銷毀狀態(tài)稿壁。

?
4種轉(zhuǎn)態(tài)和7個(gè)狀態(tài)轉(zhuǎn)化回調(diào)函數(shù)


0x02 狀態(tài)轉(zhuǎn)換的回調(diào)函數(shù)

1.onCreate()

這個(gè)函數(shù)在活動(dòng)第一次被創(chuàng)建的時(shí)候調(diào)用。一般在這個(gè)方法中完成活動(dòng)的初始化操作,比如說(shuō)加載布局歉备、綁定事件等傅是。

2.onStart()

這個(gè)方法在活動(dòng)新創(chuàng)建,第一次由不可見(jiàn)變?yōu)榭梢?jiàn)的時(shí)候調(diào)用蕾羊,活動(dòng)被啟動(dòng)了喧笔。

3.onRestart()

這個(gè)方法在活動(dòng)由不可見(jiàn)變?yōu)榭梢?jiàn)的時(shí)候調(diào)用,也就是停止?fàn)顟B(tài)變?yōu)檫\(yùn)行狀態(tài)之前調(diào)用龟再,即活動(dòng)被重新啟動(dòng)了书闸。

4.onResume()

這個(gè)方法在活動(dòng)準(zhǔn)備好和用戶進(jìn)行交互的時(shí)候調(diào)用。此時(shí)的活動(dòng)位于返回棧的棧頂,并且處于運(yùn)行狀態(tài)

5. onPause()

這個(gè)方法在活動(dòng)進(jìn)入不可交互的狀態(tài)的時(shí)候調(diào)用吸申,活動(dòng)由運(yùn)行狀態(tài)進(jìn)入暫停狀態(tài)梗劫。

6.onStop()

這個(gè)方法在活動(dòng)完全不可見(jiàn)的時(shí)候調(diào)用,活動(dòng)由暫停狀態(tài)進(jìn)入停止?fàn)顟B(tài)截碴。

7.onDestroy()

這個(gè)方法在活動(dòng)被銷毀之前調(diào)用,之后活動(dòng)的狀態(tài)將變?yōu)殇N毀狀態(tài)梳侨。


0x03 例子

在Android Studio中新建工程

新建MainActivity,改寫(xiě)以上7個(gè)回調(diào)方法日丹,分別在其中加入Log走哺,觀察函數(shù)的調(diào)用:


改寫(xiě)7個(gè)回調(diào)方法

啟動(dòng)應(yīng)用

在控制臺(tái)的Logcat中看到,依次調(diào)用了onCreate()哲虾、onStart()丙躏、onResume() :

程序調(diào)用onCreate()的時(shí)間是 02:17:53.313,也就是進(jìn)入停止?fàn)顟B(tài)的時(shí)間點(diǎn)束凑。

可以看到依次調(diào)用的時(shí)間間隔非常短晒旅,僅為幾毫秒,該活動(dòng)在中間狀態(tài)(停止?fàn)顟B(tài) 2ms汪诉、暫停狀態(tài) 6ms)幾乎沒(méi)有停留的時(shí)間废恋,直奔運(yùn)行狀態(tài)。


Log 輸出

退出應(yīng)用

點(diǎn)擊Back返回鍵:


模擬器

查看Log

接著扒寄,依次調(diào)用了onPause()鱼鼓、onStop()、onDestroy():

程序調(diào)用onPause()的時(shí)間是 02:32:57.030该编,也就是進(jìn)入暫停狀態(tài)的時(shí)間點(diǎn)迄本。

活動(dòng)從運(yùn)行狀態(tài),在中間狀態(tài) (暫停狀態(tài)1020 ms课竣、停止?fàn)顟B(tài)不足1 ms)的停留時(shí)間不長(zhǎng)嘉赎,很快進(jìn)入了銷毀狀態(tài)置媳。

Log 輸出


參考文獻(xiàn):《第一行代碼》(郭霖)?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市曹阔,隨后出現(xiàn)的幾起案子半开,更是在濱河造成了極大的恐慌,老刑警劉巖赃份,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寂拆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抓韩,警方通過(guò)查閱死者的電腦和手機(jī)纠永,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谒拴,“玉大人尝江,你說(shuō)我怎么就攤上這事∮⑸希” “怎么了炭序?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)苍日。 經(jīng)常有香客問(wèn)我惭聂,道長(zhǎng),這世上最難降的妖魔是什么相恃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任辜纲,我火速辦了婚禮,結(jié)果婚禮上拦耐,老公的妹妹穿的比我還像新娘耕腾。我一直安慰自己,他們只是感情好杀糯,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布扫俺。 她就那樣靜靜地躺著,像睡著了一般固翰。 火紅的嫁衣襯著肌膚如雪狼纬。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天倦挂,我揣著相機(jī)與錄音畸颅,去河邊找鬼担巩。 笑死方援,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涛癌。 我是一名探鬼主播送火,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼种吸!你這毒婦竟也來(lái)了呀非?” 一聲冷哼從身側(cè)響起坚俗,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岸裙,沒(méi)想到半個(gè)月后猖败,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體降允,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年剧董,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幢尚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翅楼,死狀恐怖尉剩,靈堂內(nèi)的尸體忽然破棺而出犁嗅,到底是詐尸還是另有隱情,我是刑警寧澤褂微,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站宠蚂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏求厕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一美浦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浦辨,春花似錦、人聲如沸流酬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至摊滔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間艰躺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工棒妨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人券腔。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓拘泞,卻偏偏與公主長(zhǎng)得像纷纫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子陪腌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android的活動(dòng)是層疊的,每啟動(dòng)一個(gè)新的活動(dòng),就會(huì)覆蓋在原活動(dòng)之上(類似于iOS的push,后進(jìn)先出),按下B...
    心里的另一個(gè)你閱讀 1,143評(píng)論 0 1
  • 最近學(xué)習(xí)android中關(guān)于Activity的生命周期方面,對(duì)于有些方面有所理解诗鸭,希望寫(xiě)下來(lái)記錄,方便以后查看强岸,順...
    XunselF閱讀 835評(píng)論 0 1
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,324評(píng)論 25 707
  • 我正玩的不亦樂(lè)乎蝌箍。突然有一聲廣播說(shuō)讓我們?nèi)ピ炖顺匾驗(yàn)榇罄笋R上就要來(lái)了青灼。我好激動(dòng)呀!于是我馬上拿著鞋帶著游泳...
    張宇涵小朋友閱讀 190評(píng)論 0 1
  • 百家血杂拨,千里情,萬(wàn)般冷風(fēng)卻撞東頭嶺悯衬。 -01- 村子不大不小,住著七十多戶人家。 村東頭荒荒的,早晚無(wú)鳥(niǎo)鳴亏狰,只劉二...
    亦行_閱讀 410評(píng)論 2 7