老生常談 這是一個大家都知道的圖
1 oncreat
表示activity正在被創(chuàng)建
2 onRestart
表示activity正在被重新啟動校哎,一般情況下當(dāng)前的activity從不可見重新變?yōu)榭梢姷臅r候onrestart就會被調(diào)用。
3 onStart
表示activity正在被啟動,即將開始愈案,這個時候activity已經(jīng)可見了莺治,但還是沒有出現(xiàn)在前臺抓于,還無法和用戶交互,這個時候其實可以理解activity已經(jīng)顯示出來了尽爆,但是我們還看不到。
4 onResume
activity已經(jīng)可見了读慎,并且出現(xiàn)到前臺并且開始活動漱贱,要注意這個和onstart的區(qū)別。他們都表示activity已經(jīng)可見夭委,但是onstart的時候activity還在后臺幅狮,onresume的時候activity才顯示到前臺
5 onPause
表示activity正在停止,正常情況下株灸,緊接著就會調(diào)用onstop就會被調(diào)用崇摄。在這里可以做一些存儲數(shù)據(jù) 停止動畫等工作。但是不能耗時慌烧,因為這會影響到新activity的顯示逐抑,onPause必須先執(zhí)行玩,新的activity的onresume才會執(zhí)行杏死。
6 onStop
表示activity即將停止工作±唬可以做一些稍微重量級的回收工作淑翼。但是同樣不能太耗時。
7 onDestroy
表示activity即將被銷毀 這是activity生命周期中的最后一個回調(diào) 在這里 我們可以做一些回收工作和最終資源釋放
【從整個生命周期來說onCreat和onDestroy是配對的分別標(biāo)識這創(chuàng)建和銷毀并且只是調(diào)用一次品追,從activity是否可見來說 onStart和onStop是配對的玄括,從activity是否在前臺來說 onResume和onPause是配對的】
activityA跳轉(zhuǎn)到activityB
那么是b的onresume和A的onpause的哪個先執(zhí)行嗯?
onpause 執(zhí)行完才會執(zhí)行b的onresume肉瓦,所以onpause 中不能執(zhí)行太耗時的遭京。
分析異常情況
在異常情況下終止的。系統(tǒng)會調(diào)用onSaveInstanceState來保存當(dāng)前Activityy的狀態(tài)泞莉,當(dāng)activity重建的時候哪雕,系統(tǒng)會調(diào)用onRestoreInstanceState,這個時候是吧onSaveInstanceState的bundle傳遞給onRestoreInstanceState和oncreat,因此我們可以通過onRestoreInstanceState和oncreat,來判斷activity是否被重建了。onRestoreInstanceState的調(diào)用時機(jī)在onstart之后鲫趁。
android的啟動模式斯嚎。
1standard 默認(rèn)的啟動模式。 每次啟動的時候都會創(chuàng)建一個新的實例 挨厚。不管這個實例是不是存在堡僻。并且 oncreat onstart onresume等 都會被從新調(diào)用。 在這種模式下 疫剃。誰啟動了這個實例 這個實例就在他的任務(wù)棧中钉疫。(新手注意。這個啟動模式很少使用巢价。 在manifest中添加啟動模式)
2 singleTop 棧頂復(fù)用模式
只要這個activity在棧頂牲阁,那么啟動這個activity就不出new他的實例固阁,同時 他的onNewintent就會被調(diào)用,并且需要注意的是 oncreat onstart不會被調(diào)用咨油,如果這個activity不是棧頂 您炉,那么他們就回,這個activity就會被new役电, 舉例 ABCD 再次啟動D 還是abcd
3singleTask 棧內(nèi)復(fù)用模式
這是一種單實例模式 在這種模式下赚爵。 只要是棧內(nèi)有這個實例,那么多次啟動 法瑟,activity都不會被新建
4 singleInstance 單實例模式
和singletask功能差不多冀膝。但是是加強(qiáng)版■可以這么理解窝剖。 凡是這種模式的。我們單獨給他一個棧酥夭。new以后就放在這個棧中赐纱。然后以后啟動的時候 先去這個棧尋找。有的話 直接用熬北。沒有的話 再去新建