activity.startactivty(…)
instrumentation 的 execstartactivity方法
activitymanagernative. getdefault() .startactivity(…)在其中得到activitymanagerservice(ams)的binder並在ams中startactivity,在activitymanagerservice.startacticity(…)中呼叫startactivitymaywait()
啟動過程進入activitystack中,啟動過程在activitystack中的流程:
performlaunchactivity 這個 方法 主要 完成 了 如下 幾件 事。
從 activityclientrecord 中 獲取 待 啟動 的 activity 的 元件資訊
通過 instrumentation 的 newactivity 方法 使用 類 載入 器 建立 activity 物件
建立 contextimpl 物件 並 通過 activity 的 attach 方法 來 完成 一些重要 資料 的 初始化(contextimpl 是一 個 很重 要的 資料 結構, 它是 context 的 具體 實現, context 中的 大部分 邏輯 都 是由 contextimpl 來 完成 的。 contextimpl 是通過 activity 的 attach 方法來和 activity 建立關聯的,除此以外,在 attach 方法中 activity 還會完成 window 的建立並建立自己和 window 的關聯,這樣當window 接收到外部輸入事件後就可以將事件傳遞給 activity。)
呼叫 activity 的 oncreate 方法activity 已經完成了整個啟動過程。
iactivitymanager相關類
activity 的啟動過程
1 handler h 對launch activity 這個訊息處理可以得到,activity 的啟動過程由activitythread 的 handlelaunchactivity 方法實現。2 從activityclientrecord 獲取啟動的activity 的組建資訊。3 通過 ins...
Activity啟動過程全解析
幾個系統關鍵物件 systemserver也是乙個程序,而且是由zygote程序fork出來的。系統裡面重要的服務都是在這個程序裡面開啟的,比如 activitymanagerservice packagemanagerservice windowmanagerservice等等 在zygotein...
mysql啟動過程長 mysql啟動過程
mysql啟動過程經過以下順序 1.mysql讀取配置檔案的順序 讀取順序 etc my.cnf etc mysql my.cnf usr etc my.cnf my.cnf 2.mysql啟動方式 mysql啟動方式有三種 mysqld mysqld safe mysqld multi 主要用於多...