Activity啟動模式

2021-07-12 01:59:10 字數 1394 閱讀 9082

兩種方式可以定義activity啟動模式:

- manifest

- intent

intent定義的啟動模式優先於manifest

不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activity,而且該activity處於乙個後台任務中,那麼整個任務都會被帶到前台,此時,回退棧會包含該任務的所有activity。

相同affinity的activity執行在相同任務中 ,可以通過"taskaffinity"設定。

兩種情況需要該屬性。

- 啟動乙個flag_activity_new_task的activity時。

設定為flag_activity_new_task的activity可以在乙個新的任務中啟動,但並非必然。如果找到了乙個與被啟動activity相同affinity的任務,系統會把該activity加入此任務中,否則,才會開啟乙個新的任務。(預設情況下,乙個應用的所有activity擁有相同的affinity,所以都執行在同乙個任務中。)

- activity的allowtaskreparenting屬性設定為true時。

這種情況下,activity能從啟動時所屬的任務a中移動到與該activity的affinity相同的任務b中,當任務b來到前台時。

注意,如果不是這兩種情況,那麼該屬性的設定是無用的

如果使用者長時間離開乙個任務,系統會清掉這個任務除了根activity以外的其他activity。當使用者重新返回這個任務時,只有根activity被重建。有一些屬性可以修改這個行為:

-"alwaysretaintaskstate"

如果在乙個任務的根activity把該屬性設定為true,那麼剛才說到的預設行為就不會發生。

-"cleartaskonlaunch"

如果在乙個任務的根activity把該屬性設定為true,無論使用者什麼時候離開,都會發生上面的行為。

-"finishontasklaunch"

該屬性類似於"cleartaskonlaunch",但是它只操作單一的activity,而不是一整個任務。如果某個activity的該屬性為true,那麼使用者任何時候離開後再返回這個任務,都會清掉這個activity

參考 android官方文件

activity singletask之謎

activity 啟動模式

在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...

activity啟動模式

1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...

Activity啟動模式

activity一共有以下四種launchmode standard singletop singletask singleinstance standard 不管有沒有已存在的例項,都會生成新的例項 預設模式 singletop 如果有對應的activity例項正位於棧頂,就重複利用,沒有處於棧頂...