Activity啟動模式需注意的坑

2021-09-25 13:23:03 字數 664 閱讀 4169

標準啟動standard模式版本差異:

singletask的兩種情況:

待啟動的activity例項存在;

待啟動的activity例項不存在。

考慮第一種例項存在:如果某個任務中存在activity例項,則僅僅是呼叫已有例項的onnewintent()方法,在這之前,如果已有activity例項不是位於任務頂,那麼在它之上的其他activity都會被銷毀,確保目標activity位於棧頂。

考慮第二種例項不存在:

啟動activity的例項不存在,這時候肯定會新建乙個activity的例項,但是否會新建乙個任務呢?這又得分情況討論,關鍵在於 taskaffinity這個屬性。

新建的activity例項需要尋找乙個宿主任務,當某個任務的affinity屬性(taskrecord.affinity)與activity例項的taskaffinity屬性(activityrecord.taskaffinity)相同時,則認為找到了宿主任務。

所以,是否新建乙個任務,還取決於taskaffinity屬性。

android:name=".activityb"

android:taskaffinity="" />

這時候,activity b就會在乙個新的任務中啟動,並且新任務的affinity屬性為空

Activity啟動模式需注意的坑

標準啟動standard模式版本差異 singletask的兩種情況 待啟動的activity例項存在 待啟動的activity例項不存在。考慮第一種例項存在 如果某個任務中存在activity例項,則僅僅是呼叫已有例項的onnewintent 方法,在這之前,如果已有activity例項不是位於任...

activity 啟動模式

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

activity啟動模式

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