Activity

生命周期

activity生命周期的切換過程.jpg

啟動模式

  1. standard:標(biāo)準(zhǔn)模式,系統(tǒng)默認(rèn)的模式,每次啟動一個Activity都會重新創(chuàng)建一個新的實(shí)例,不管這個實(shí)例是否已經(jīng)存在。
  2. singleTop:棧頂復(fù)用模式。如果新的Activity已經(jīng)位于任務(wù)棧的棧頂,那么此Activity不會被重新創(chuàng)建。如果新的Activity實(shí)例已存在但不是位于棧頂,那么新的Activity仍然會被重新創(chuàng)建。
  3. singleTask:棧內(nèi)復(fù)用模式。只要Activity在一個棧中存在,那么多次啟動這個Activity都不會重新創(chuàng)建實(shí)例,并將當(dāng)前Activity實(shí)例上面的其他Activity實(shí)例都移除棧。
  4. singleInstance:單實(shí)例模式,這是一種加強(qiáng)的singleTask模式,除了具有singleTask模式的所有特性外,這種模式的Activity只能單獨(dú)地位于一個任務(wù)棧中。

相關(guān)問題

  1. 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ù)。

  1. Activity中onStart和onResume的區(qū)別?onPause和onStop的區(qū)別?
    onStart和onStop是從Activity是否可見這個角度來回調(diào)的,而onResume和onPause是從Activity是否位于前臺這個角度來回調(diào)的。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容