圖解Activity生命周期
這是官網(wǎng)的Activity生命周期結(jié)構(gòu)圖,從這個(gè)圖中可以看出Activity的生命周期函數(shù)挺多的,其實(shí)他的生命周期和以往我們看到的其他組件的生命周期一樣,都是從創(chuàng)建到銷毀的過(guò)程,只不過(guò)之間多加了幾個(gè)生命周期函數(shù),將他的生命周期細(xì)化了。
首先看到的事onCreate()函數(shù),顧名思義這個(gè)函數(shù)在Activity開(kāi)始創(chuàng)建時(shí)調(diào)用,可以在其中定義一些初始化操作。
接下來(lái)是onStart()方法,這個(gè)方法在Activity開(kāi)始被執(zhí)行時(shí)調(diào)用,它緊隨onCreate()方法之后調(diào)用,
接著是onResume()方法,這個(gè)方法對(duì)我們來(lái)說(shuō)算是比較陌生的,這個(gè)方法是在該Activity或得用戶輸入焦點(diǎn)時(shí)被調(diào)用,這個(gè)或得用戶輸入焦點(diǎn)有點(diǎn)不好理解,如果我們用過(guò)Android手機(jī)或者其他系統(tǒng)的手機(jī)時(shí),經(jīng)常會(huì)看到有些窗口雖然能看到但無(wú)法對(duì)他進(jìn)行操作,這時(shí)的Activity就沒(méi)有或得用戶焦點(diǎn)。當(dāng)這個(gè)方法調(diào)用后Activity開(kāi)始真正的運(yùn)行了,在Activity正在運(yùn)行時(shí)用戶激活了另一個(gè)Activity,
這時(shí)將調(diào)用第一個(gè)Activity的onPause()方法,可以理解為第一個(gè)Activity被暫停了,這個(gè)時(shí)候如果系統(tǒng)的內(nèi)存不夠用(手機(jī)內(nèi)存不夠用的情況經(jīng)常發(fā)生),第一個(gè)Activity的進(jìn)程可能被殺死(何時(shí)被殺死是由系統(tǒng)決定的,不需要我們參入),當(dāng)下次我們?cè)龠\(yùn)行第一個(gè)Activity時(shí)就需要重新創(chuàng)建這個(gè)Activity,那就又需要調(diào)用onCreate()方法。
如果在這個(gè)Activity沒(méi)有被殺死的情況下,我們重新調(diào)用第一個(gè)Activity,就會(huì)直接調(diào)用它的onResume()方法后開(kāi)始運(yùn)行。
如果第一個(gè)Activity很久都沒(méi)有得到再次運(yùn)行機(jī)會(huì),就會(huì)調(diào)用onStop()被停止,
這時(shí)如果Activity又或得用戶輸入焦點(diǎn),就會(huì)調(diào)用onRestart()方法,
重新開(kāi)始執(zhí)行這個(gè)Activity,或者被系統(tǒng)殺死,
否則調(diào)用onDestroy()方法銷毀Activity。
這整個(gè)過(guò)程看起來(lái)有點(diǎn)繞,其實(shí)在實(shí)際開(kāi)發(fā)中我們很少會(huì)用到所有的生命周期函數(shù),但我們要弄清它的原理,在使用時(shí)知道所以然就行了。