Activity的四種啟動模式
- 標準模式:standard
- 棧頂復用模式:singleTop
- 棧內復用模式:singleTask
- 加強版棧內復用模式:singleInstance
如何修改Activity的啟動模式
在AndroidManifest.xml文件中注冊時添加
android:launchMode="singleTask"
launchMode屬性有四個值,就是Activity的四種啟動模式。
標準模式:standard
標準模式不用在AndroidManifest.xml文件中添加launchMode屬性,Activity默認以standard模式啟動。在standard模式下可以在棧中存在該Activity的多個實例,準確的來說是我們每次去創建同一個Activity的時候,無論棧內是否有這個Activity的實例我們都會創建一個新的實例放在棧頂。這種啟動模式是常規Activity使用最多的啟動模式。
棧頂復用模式:singleTop
棧頂復用模式,顧名思義,當我們創建Activity實例的時候,會先檢查位于棧頂的Activity實例是否跟我們創建的Activity實例是同一個,如果是同一個的,那我們不會創建新的實例,直接使用當前棧頂的Activity實例。以singleTop啟動的Activity可以在棧中存在多個實例,但是棧內不會存在兩個連續相同的實例。
棧內復用模式:singleTask
與棧頂復用模式不同的是一個棧內只有一個實例,當我們啟動Activity時,會遍歷棧內是否存在這個Activity的實例,如果有的話,那么會對該實例上面Activity實例進行清棧操作,讓這個Activity實例到棧頂。最常見的使用方式就是在應用的首頁中,其他頁面都是用過首頁進行伸展的。我們通過Intent跳轉到首頁之后不會存在返回,回退的頁面,這個時候之前壓入棧的Activity沒有用了。使用singleTask模式就可以將棧內不會繼續使用的Activity清除。
加強版棧內復用模式:singleInstance
與singleTask模式的區別在于,以singleInstance模式啟動的Activity會自己存在一個棧中,這個棧不會有其他Activity實例。