Activity使用啟動模式主要是為了讓開發者避免創建多個重復的Activity實例,可以根據自己的需要來選擇自己適合的啟動模式。
設置Activity啟動模式只需要在AndroidManifest.xml文件下對應的<activity>標簽下配置,如下:
Activity的主要有四種啟動模式:
1、standard:默認啟動模式,不用做任何配置。在這種模式下,每次都會默認去創建一個模式,所以在這種模式下會產生多個重復的實例。
例如:A——>B——>C,%20C不停的轉到C界面,實例也不停的創建,如下圖:
按back一次返回(銷毀),如下圖:
使用這種模式會影響用戶體驗,不過也需要看情況而使用。
2、singleTop:獨享任務棧頂 ,在創建一個新的Activity之前會先去查找任務棧,有沒有個這個Activity實例,如果有就重用,沒有就重新創建。在這種模式下,不允許有重復的實例。
例如:A—B—C三個實例,把C實例設置為singleTop模式,然后C 不停的跳轉到C界面,代碼如下:
(1)設置C為singleTop模式
(2)C界面跳轉到C界面
(3)運行結果:
C界面只會創建一次,在singleTop模式下不允許有多個實例。
3、singleTask:獨享任務棧,和singleTop模式有點類似,都會先去查找任務棧里面有沒有要被創建的Activity實例,如果有就重用并且把其他的Activity實例銷毀,只留自己一個。
例如:有三個實例A、B、C,我把A設置為singleTask模式
跳轉過程是這樣子的:A——B——C——A運行結果如下:
注意看到沒,A(也就是第一個界面)只創建了一次,之后跳轉A的時候并把B(第二個界面)、C(第三個界面)給銷毀了。這個也就是singleTask模式,不允許重復實例,并且只能它自己獨享一個棧。
4、singleInstance:單例,只有一個實例,不允許和其他Activity實例存在,只允許單獨存在一個棧。
例如:有三個Activity實例A、B、C,它們三個之間可以互動,B為singleInstance模式,A啟動B,B會另外新開一個Task,不會和A共用一個task,B再啟動C,C會壓在A紙上,不會和B共用一個task。這個的話得自己去實踐了。不知道如果去描述。
新聞熱點
疑難解答