Activity的四種啟動模式
- 標(biāo)準(zhǔn)模式:standard
- 棧頂復(fù)用模式:singleTop
- 棧內(nèi)復(fù)用模式:singleTask
- 加強(qiáng)版棧內(nèi)復(fù)用模式:singleInstance
如何修改Activity的啟動模式
在AndroidManifest.xml文件中注冊時(shí)添加
android:launchMode="singleTask"
launchMode屬性有四個值,就是Activity的四種啟動模式。
標(biāo)準(zhǔn)模式:standard
標(biāo)準(zhǔn)模式不用在AndroidManifest.xml文件中添加launchMode屬性忙灼,Activity默認(rèn)以standard模式啟動骇陈。在standard模式下可以在棧中存在該Activity的多個實(shí)例返敬,準(zhǔn)確的來說是我們每次去創(chuàng)建同一個Activity的時(shí)候钩述,無論棧內(nèi)是否有這個Activity的實(shí)例我們都會創(chuàng)建一個新的實(shí)例放在棧頂。這種啟動模式是常規(guī)Activity使用最多的啟動模式。
棧頂復(fù)用模式:singleTop
棧頂復(fù)用模式烁涌,顧名思義,當(dāng)我們創(chuàng)建Activity實(shí)例的時(shí)候酒觅,會先檢查位于棧頂?shù)腁ctivity實(shí)例是否跟我們創(chuàng)建的Activity實(shí)例是同一個撮执,如果是同一個的,那我們不會創(chuàng)建新的實(shí)例舷丹,直接使用當(dāng)前棧頂?shù)腁ctivity實(shí)例抒钱。以singleTop啟動的Activity可以在棧中存在多個實(shí)例,但是棧內(nèi)不會存在兩個連續(xù)相同的實(shí)例颜凯。
棧內(nèi)復(fù)用模式:singleTask
與棧頂復(fù)用模式不同的是一個棧內(nèi)只有一個實(shí)例谋币,當(dāng)我們啟動Activity時(shí),會遍歷棧內(nèi)是否存在這個Activity的實(shí)例症概,如果有的話蕾额,那么會對該實(shí)例上面Activity實(shí)例進(jìn)行清棧操作,讓這個Activity實(shí)例到棧頂彼城。最常見的使用方式就是在應(yīng)用的首頁中诅蝶,其他頁面都是用過首頁進(jìn)行伸展的。我們通過Intent跳轉(zhuǎn)到首頁之后不會存在返回募壕,回退的頁面调炬,這個時(shí)候之前壓入棧的Activity沒有用了。使用singleTask模式就可以將棧內(nèi)不會繼續(xù)使用的Activity清除舱馅。
加強(qiáng)版棧內(nèi)復(fù)用模式:singleInstance
與singleTask模式的區(qū)別在于缰泡,以singleInstance模式啟動的Activity會自己存在一個棧中,這個棧不會有其他Activity實(shí)例代嗤。