場景分析
下面通過啟動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
中的mhomestack
,mhomestack
管理的是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 任務棧可以移動到後台,並且保留了每乙個...