Android基礎:Activity的四種啓動模式

一、概論

在多Activity開發中,一般我們需要在不同的Activity之間跳轉,有時候我們希望點擊返回鍵或者finish掉當前Activity時,能夠回退到上一個Activity;有時候我們又希望在打開Activity時,不會創建多個Activity實例。這時,我們就需要用到Activity的啓動模式來達到我們想要的目的。

二、任務棧

提到Activity的啓動模式有必要先簡單談談任務棧。

1.當應用程序一啓動時,系統給它提供了一個任務棧,主要用來存儲Activity對應的實例對象;

2.默認的是:每打開一個界面都會在任務棧中放入一個對應的Activity實例任務,關閉一個界面時就會從任務棧移除該界面對應的Activity實例任務,當前所有的界面都關閉掉了,任務棧也就被移除空了,應用程序也隨着退出。

3.任務棧是先進後出結構的,也就是說最先放入任務棧中的Activity會最後被移除,也就是說最先打開的Activity會最後被關閉掉。就跟在彈夾中塞入子彈一樣,最先塞入彈夾的肯定最後一發被打出。

三、Android的啓動模式

Android的啓動模式有四種:standard、singleTop、singleTask、singleInstance

1.standard 默認模式

點擊按鈕開啓Activity時,每次都會創建新的Activity對象放入任務棧中;當點Android設備的返回鍵時,可以看到剛纔創建Activity實例的倒序依次出現。

2.singleTop 單一頂部模式

如果任務棧的棧頂存在這個要開啓的Activity對應的任務,不會再重新創建這個Activity, 而是複用已經存在的Activity。

3.singleTask 單一任務模式

在當前任務棧裏面只能有一個這樣的Activity實例存在,當開啓activity的時候, 就去檢查在任務棧裏面是否有實例已經存在, 如果有實例存在就複用這個已經存在的activity, 並且把這個activity上面的所有的別的activity都清空,保證整個任務棧裏面只有一個任務存在。

4.singleInstance 單一實例模式

這個啓動模式非常特殊, activity會運行在自己的任務棧裏面, 並且這個任務棧裏面只有一個實例存在。

應用場景:在多個程序中訪問瀏覽器時,如果當前瀏覽器沒有打開,則打開瀏覽器,否則會在當前打開的瀏覽器中訪問,而不是重新打開一個,此模式會節省大量的系統資源。

四、啓動模式的配置方式

我們都知道,Activity需要在AndroidManifest.xml文件中配置才能使用,啓動模式在我們配置Activity的時候也可以配置在AndroidManifest.xml文件中。例如:




standard是Activity的默認啓動模式,無需配置;其他的啓動模式對應的配置爲:

android:launchMode="singleTop"

android:launchMode="singleTask"

android:launchMode="singleInstance"



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章