Activity的四種啟動模式詳解

2021-08-16 00:03:22 字數 1198 閱讀 6446

standard:activity的預設載入方法,即使某個activity在task棧中已經存在,另乙個activity通過intent跳轉到該activity,同樣會新建立乙個例項壓入棧中。例如:現在棧的情況為:a b c d,在d這個activity中通過intent跳轉到d,那麼現在的棧情況為: a b c d d 。此時如果棧頂的d通過intent跳轉到b,則棧情況為:a b c d d b。此時如果依次按返回鍵,d d c b a將會依次彈出棧而顯示在介面上。

singletop:如果某個activity的launch mode設定成singletop,那麼當該activity位於棧頂的時候,再通過intent跳轉到本身這個activity,則將不會建立乙個新的例項壓入棧中。例如:現在棧的情況為:a b c d。d的launch mode設定成了singletop,那麼在d中啟動intent跳轉到d,那麼將不會新建立乙個d的例項壓入棧中,此時棧的情況依然為:a b c d。但是如果此時b的模式也是singletop,d跳轉到b,那麼則會新建乙個b的例項壓入棧中,因為此時b不是位於棧頂,此時棧的情況就變成了:a b c d b。

singletask:如果某個activity是singletask模式,那麼task棧中將會只有乙個該activity的例項。例如:現在棧的情況為:a b c d。b的launch mode為singletask,此時d通過intent跳轉到b,則棧的情況變成了:a b。而c和d被彈出銷毀了,也就是說位於b之上的例項都被銷毀了。

注意:singletask模式的activity不管是位於棧頂還是棧底,再次執行這個activity時,都會destory掉它上面的activity來保證整個棧中只有乙個自己,切記切記

singleinstance:將activity壓入乙個新建的任務棧中。例如:task棧1的情況為:a b c。c通過intent跳轉到d,而d的launch mode為singleinstance,則將會新建乙個task棧2。此時task棧1的情況還是為:a b c。task棧2的情況為:d。此時螢幕介面顯示d的內容,如果這時d又通過intent跳轉到d,則task棧2中也不會新建乙個d的例項,所以兩個棧的情況也不會變化。而如果d跳轉到c,則棧1的情況變成了:a b c c,因為c的launch mode為standard,此時如果再按返回鍵,則棧1變成:a b c。也就是說現在介面還顯示c的內容,不是d。

Activity四種啟動模式

launchmode在多個activity跳轉的過程中扮演著重要的角色,它可以決定是否生成新的activity例項,是否重用已存在的activity例項,是否和其他activity例項公用乙個task裡。這裡簡單介紹一下task的概念,task是乙個具有棧結構的物件,乙個task可以管理多個acti...

Activity四種啟動模式

activity的啟動模式可以通過androidmanifest.xml檔案中的元素的屬性來指定,一共有4中模式 android name activitymain android launchmode singletask 1 standard 2 singletop 3 singletask 4...

Activity 四種啟動模式

activity有四種載入模式 standard 預設 singletop,singletask和 singleinstance。以下逐一舉例說明他們的區別 一 standard activity的預設載入方法,即使某個activity在task棧中已經存在,另乙個activity通過intent跳...