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ù)棧如下圖:

點(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ù)棧如下圖:

如上,同一個(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ù)棧如下圖:

再此開啟頁面A,Activity任務(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ù)棧如下圖:

