生命周期

activity生命周期的切換過程.jpg
啟動模式
- standard:標(biāo)準(zhǔn)模式,系統(tǒng)默認(rèn)的模式,每次啟動一個Activity都會重新創(chuàng)建一個新的實(shí)例,不管這個實(shí)例是否已經(jīng)存在。
- singleTop:棧頂復(fù)用模式。如果新的Activity已經(jīng)位于任務(wù)棧的棧頂,那么此Activity不會被重新創(chuàng)建。如果新的Activity實(shí)例已存在但不是位于棧頂,那么新的Activity仍然會被重新創(chuàng)建。
- singleTask:棧內(nèi)復(fù)用模式。只要Activity在一個棧中存在,那么多次啟動這個Activity都不會重新創(chuàng)建實(shí)例,并將當(dāng)前Activity實(shí)例上面的其他Activity實(shí)例都移除棧。
- singleInstance:單實(shí)例模式,這是一種加強(qiáng)的singleTask模式,除了具有singleTask模式的所有特性外,這種模式的Activity只能單獨(dú)地位于一個任務(wù)棧中。
相關(guān)問題
- Activity的onNewIntent()方法何時會被調(diào)用?
當(dāng)啟動模式為singleTop的時候,android系統(tǒng)會先檢查棧頂?shù)膶?shí)例是不是該Activity的實(shí)例,如果不是的話,它會創(chuàng)建一個該Activity的實(shí)例,并調(diào)用onCreate函數(shù)。如果棧頂已經(jīng)存在該實(shí)例,則不會再創(chuàng)建該Activity的實(shí)例,而且不會執(zhí)行onCreate函數(shù),而是執(zhí)行onNewIntent函數(shù)來重新啟動已經(jīng)存在的實(shí)例。
同理,當(dāng)啟動模式為singleTask的時候,若棧頂不是該Activity的實(shí)例的時候,系統(tǒng)會在棧中尋找是否存在這個實(shí)例,如存在的話就會把這個實(shí)例放在棧頂,并把它上邊的實(shí)例清除掉。但如果棧頂已經(jīng)是這個實(shí)例的話,就會執(zhí)行onNewIntent函數(shù)。
-
Activity中onStart和onResume的區(qū)別?onPause和onStop的區(qū)別?
onStart和onStop是從Activity是否可見這個角度來回調(diào)的,而onResume和onPause是從Activity是否位于前臺這個角度來回調(diào)的。