Activity啟動場景Task分析 二

2022-08-21 01:57:15 字數 1268 閱讀 3119

場景分析

下面通過啟動activity的**來分析一下:

首先,我們看下處於桌面時的狀態,執行命令:

adb shell dumpsys activity
結果如下

activity manager activities (dumpsys activity activities)

display #0(activities from top to bottom):

stack #0:

//中間省略其他...

task id #102

//中間省略其他...

running activities (most recent first):

//省略其他

實際上就是如下圖所示的結構,這裡的stack #0就是activitystacksupervisor中的mhomestackmhomestack管理的是launcher相關的任務。

從桌面點選圖示啟動乙個aactivity,可以看到,會多了乙個stack #1,這個stack #1就是activitystacksupervisor中的mfocusedstack,mfocusedstack負責管理的是非launcher相關的任務。同時也會建立乙個新的activityrecord和taskrecord,activityrecord放到taskrecord中,taskrecord則放進mfocusedstack中。

然後,我們從aactivity中啟動乙個bactivity,可以看到會建立乙個新的activityrecord然後放到已有的taskrecord棧頂。

如果我們想啟動的bactivity在乙個新的棧中呢,我們可以用singleinstance的方式來啟動bactivity。singleinstance後面也會講到。這種方式會建立乙個新的activityrecord和taskrecord,把activityrecord放到新的taskrecord中去。

Activity啟動模式的應用場景

singletop適合接收通知啟動的內容顯示頁面。例如,某個新聞客戶端的新聞內容頁面,如果收到10個新聞推送,每次都開啟乙個新聞內容頁面是很煩人的。singletask適合作為程式入口點。例如瀏覽器的主介面。不管從多少個應用啟動瀏覽器,只會啟動主介面一次,其餘情況都會走onnewintent,並且會...

Activity的啟動模式及應用場景

標籤 空格分隔 activity 1.standard這是預設模式,每次啟用activity時都會建立activity例項,並放入任務棧中。使用場景 大多數activity startactivity activity a activity b activity c back activity c ...

二 Activity的啟動模式以及使用場景

1.任務棧的介紹 1 程式一開啟就會建立了乙個新的任務棧,當前程式的所有activity都儲存在這個任務棧中。2 乙個任務棧包含乙個activity的集合,使用者可以有序的和其中的activity進行互動,但只有棧頂的activity才可以和使用者進行互動 3 任務棧可以移動到後台,並且保留了每乙個...