最近在處理ActivityManager問題中得到的一些心得分享給大家越庇,如有錯誤請指教哥倔。
活動管理(activitymanager)
? ? ? ?activitymanagerservice是以棧的管理活動的网杆。每一個活動屬于一個任務(wù)颈嚼,一個任務(wù)可以看做一系列活動集合脂倦;task內(nèi)部以堆棧的概念管理著扑馁;每次切換一個新的任務(wù)的時候;都會將所屬活動切換到前臺黍翎,并將活動置于棧頂面徽;之后才會進行恢復(fù)的過程。
? ? ? ?所有的任務(wù)共同存儲在ArrayList中匣掸,每當(dāng)發(fā)生任務(wù)切換的時候趟紊,都要執(zhí)行ArrayList的刪除(delete)和移動(move)工作任務(wù)和活動任務(wù)圖,
在上圖中我們可以看到A,B,C,DE,F代表著6個活動碰酝;顏色相同的活動屬于一個task.F位移棧頂霎匈;表示用于當(dāng)前的交互的活動;F所屬任務(wù)也稱為前臺任務(wù)送爸;所以從圖上可以看出铛嘱;任務(wù)只有概念之分;并沒有額外的數(shù)據(jù)結(jié)構(gòu)單獨來實現(xiàn);task是以ArrayList方式實現(xiàn)的袭厂,index索引為0時墨吓;Activity A位移棧底;index為5時纹磺;活動F位移棧頂帖烘。
當(dāng)F中startActivity,A會發(fā)生什么場景橄杨?這些設(shè)置到活動launchmode和intent中的啟動關(guān)于這部分的可以參考任務(wù)和返回堆棧
下面用一張圖來表示Task ?and back stack來做一點補充:
上圖中啟動目標的意圖標志都是采用默認值秘症。