此階段 6 步驟:
獲取client端的uid,判斷client端是否有許可權啟動應用程式activity。
查詢系統中域intent 匹配的activity
1 呼叫resolveactivity 通過pkms 查詢是否存在指定intent的activity
2 根據caller判斷啟動activity的客戶端是應用程式還是其他查詢(adb shell)
3 呼叫activitystack.startactivitylocked 執行預啟動階段第三步
4.處理wait 狀態,正常啟動狀態不會wait
adb下「am start -w 」 啟動activity 時,需要wait 狀態
1.建立activity 的activityrecord 物件,代表此activoty 在ams 啟動流程中單位;
1.根據啟動標記 和 啟動模式,判斷是否需要在新的task 中執行目標activity;
2.判斷是否有可服用的task 或者activity;
需要在新的task 總執行activity的條件有如下3 種:
(1)sourcerecord 為null,即 不是由activity發出的啟動請求(launcher 或者adb start 啟動的activity)
(2)sourcerecord 的啟動模式為singleinstance
(3)要啟動的activity 的啟動模式為singleinstance 或singletask
滿足以上三個條件,啟動flags'中新增 flag_
3.將復用/新建的taskrecord 與activityrecord 關聯;
4.在ams 中更新task數量;
5.呼叫activitystack.startactivitylocked
1. 將要啟動的activityrecord 物件新增到mhistory 的適當位置,更新task 中activity 的計數,準備activity 的切換動畫;
2. 呼叫activitystack.resumetopactivitylocked
查詢當前棧頂是否有需要顯示的activity,沒有則啟動home桌面並返回;如果有需要顯示activity,就查詢當前是否需要暫停的activity
主要工作就是 :
暫停啟動目標activity 的源activity
此 階段 主要是建立目標activity 所執行的程序。
此時因為處於resume 狀態的 源activity 已經處於暫停狀態;
2.從activitystack.mhistory 中取出 第乙個非 finishing 狀態的activityrecord
1.檢查ams.mprocessname 成員變數中是否已經存在制定的程序資訊(ams.mprocessname 這個陣列中存放這ams 中處理的程序的資訊2.呼叫ams.startprocesslocked 函式
1.根據procesname 來查詢ams 的成員變數mprocessname 中是否已經存在該程序對應的processrecord 物件(之前啟動過);
2.無 processname 對應的processrecord 物件,則會呼叫newprocessrecordlocked 方法建立目標activity對應的processrecord 程序,並且存放在ams.mprocessname 中;
3.呼叫ams.startprocesslocked
1.通過pkms 獲取當前應用程式的group_id
3,.此程序建立完了就擁有了自己的pid。
4.ams 會傳送乙個超時訊息(10s 或者 20s),超過此訊息後process.start 未完成,會觸發ams 的超時管理
Activity學習筆記
如果所寫內容有錯誤,歡迎提出,我會及時修改。1 standard 標準模式,也是系統的預設模式,該模式每次啟動都會在任務棧頂重新建立乙個activity例項。2 singletop 棧頂復用模式 在啟動activity時,如果被啟動的activity就是當前任務棧頂的activity,那麼會直接啟動...
activity流程筆記
之前遇到了乙個問題,在activity流程中不小心把乙個流程圖的表單的標識key,給弄丟了,同時舊流程圖又給刪除了,這個時候新的流程 就會載入到新部署的流程圖,但是舊的資料就查不到流程圖中的額 標識key 要保證兩個流程圖完全是一樣的只有引數不一樣,解決方法 1.首先我的form key 是在 ac...
在Activity中使用Menu
然後編輯該xml檔案 其中,每乙個item標籤就是選單中的乙個小項,android id屬性是該item的唯一標識,android title屬性是選單中顯示該項的文字。重寫此方法在activity中使用選單 override public boolean oncreateoptionsmenu m...