Activity四種啟動(dòng)模式

Android是通過任務(wù)棧來管理Activity的,常見有以下操作:

1、打開一個(gè)Activity就是進(jìn)棧

2、關(guān)閉一個(gè)Activity就是出棧

3、我們操作的Activity永遠(yuǎn)是棧頂?shù)腁ctivity

4、退出應(yīng)用程序,是清空應(yīng)用任務(wù)棧

6、一般情況下一個(gè)應(yīng)用對(duì)應(yīng)一個(gè)任務(wù)棧


Activity有以下四種啟動(dòng)模式:

1、standard模式

2、singleTop模式

3、singleTask模式

4、singleInstance模式

可以在清單文件中配置 Activity 的 launchModel 屬性,來設(shè)置啟動(dòng)模式。如:

android:launchMode="singleInstance"


一:standard模式:

是Activity默認(rèn)開啟的模式,不設(shè)置時(shí),默認(rèn)就是這個(gè)模式。設(shè)置此模式的Activity可以多次被開啟。

如:設(shè)置頁面A、頁面B都為standard模式。依次開啟 頁面A ->頁面B ->頁面B ->頁面A ->頁面A,被開啟的任務(wù)棧如下圖:

standard模式任務(wù)棧

點(diǎn)擊返回按鈕,Activity會(huì)依次出棧,銷毀。


二:singleTop模式

如果設(shè)置此模式,任務(wù)棧會(huì)檢查棧頂?shù)腁ctivity,如果棧頂?shù)腁ctivity是要開啟的Activity,此時(shí)新的Activity不會(huì)被開啟(就是說一個(gè)Activity不會(huì)被連續(xù)開啟)。

如:設(shè)置頁面B為singleTop模式。依次開啟 頁面A ->頁面B ->頁面B,被開啟的任務(wù)棧如下圖:

singleTop模式任務(wù)棧

如上,同一個(gè)Activity不會(huì)被連續(xù)開啟。


三:singleTask模式

會(huì)檢查當(dāng)前任務(wù)棧是否已經(jīng)有要開啟的Activity。如果有,會(huì)把任務(wù)棧清空。并從新打開復(fù)用此Activity。

如:設(shè)置頁面A為singleTask模式,頁面B為默認(rèn)模式。依次開啟 頁面A ->頁面B ->頁面B,此時(shí)任務(wù)棧如下圖:

任務(wù)棧

再此開啟頁面A,Activity任務(wù)棧如下圖:

singleTask模式任務(wù)棧

四:singleInstance模式

系統(tǒng)會(huì)為開啟的activity從新創(chuàng)建一個(gè)任務(wù)棧, 如果再重新開啟這個(gè)activity,不會(huì)再開啟新的Activity和任務(wù)棧(如,系統(tǒng)的電話頁面,不管撥打或者接聽多少個(gè)電話,始終只有一個(gè)電話頁面)

如:設(shè)置頁面B為singleInstance模式。依次開啟 頁面A ->頁面A ->頁面B,被開啟的任務(wù)棧如下圖:

任務(wù)棧1
任務(wù)棧2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容