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