0、目錄
一、爲什麼需要啓動模式
二、啓動模式有哪些
三、如何設置啓動模式
一、爲什麼需要啓動模式
爲什麼activity需要啓動模式呢?
默認情況下,每創建一個activity實例就會把該實例放入任務棧,如果多次啓動同一個activity,那麼系統就會創建多個實例,並把所有實例一一放入任務棧中,當點擊back返回鍵時,這些activity會一一回退。多次啓動同一個activity,系統重複創建多個實例,顯然是不妥的,我們期望即便多次啓動同一個activity,只創建一個實例就好了,所以Android在設計時就有了啓動模式。
二、啓動模式有哪些
啓動模式有四種,standard, singleTop, singleTask, singleInstance.
具體總結如下:
應用場景:
三、如何設置啓動模式
啓動模式的設置有兩種方法
方法一:在AndroidMenifest的Activity標籤下設置launchMode屬性。
如:android:launchMode="singleTask"
方法二:通過在Intent中設置標誌位
如:Intent intent = new Intent(this, xxx.class);
intent.addFlags(Intent.FALG_ACTIVITY_NEW_TASK);
兩種方式都可以設置activity的啓動模式,但是二者也有一定的區別。優先級上,方法二的優先級高於方法一,即當兩種設置方式同時存在時,以第二種方法爲準。
activity標誌位說明:
FLAG_ACTIVITY_NEW_TASK作用是爲activity指定singleTask啓動模式
FLAG_ACTIVITY_SINGLE_TOP作用是爲activity指定singleTop啓動模式
FLAG_ACTIVITY_CLEAR_TOP作用是具有此標誌位的activity,在它啓動時,同一任務棧中所有位於它上面的activty都要被移出任務棧。
總結如下: