天天看點

ActivityManagerService啟動過程分析

之前講android的view的繪制原理和流程的時候,講到過在android調用setcontentview之後,android調用了一個prepretravle的方法,這裡面就提到了activitymanagerservice。

activitymanagerservice提供的主要功能:

       (1)統一排程各應用程式的activity

       (2)記憶體管理

       (3)程序管理

ActivityManagerService啟動過程分析

system server代碼位于://frameworks\base\services\java\com\android\server\systemserver.java

我們來看一段啟動的代碼:

上面的6個步驟就是systemserver中關于ams的調用,完成ams的建立和系統的初始化,以及與wms互動等流程。

一、activitymanagerservice 建立過程

mactivitymanagerservice = msystemservicemanager.startservice(

            activitymanagerservice.lifecycle.class).getservice();

通過systemservicemanager這樣一個模闆類來建立運作在systemserver中的framework服務。并将建立的服務統一儲存在隊列管理。

mactivitymanagerservice.setsystemprocess();

mactivitymanagerservice将system扔到ams統一管理和排程

這一步就是給systemserver程序建立processrecord,adj值,就是将systemserver程序加入到ams程序管理。

mactivitymanagerservice.installsystemproviders();

取出程序名為"system",user_id為system_uid的程序資訊 ,生成運作在system程序中的providerinfo,并交給上下文的provider。這段代碼的任務就是查詢與安裝content provider并且釋出,其中查詢出來的provider為settingsprovider

四、ams systemready過程

mactivitymanagerservice.systemready();

發送action_pre_boot_complete方法,清理啟動的persistent程序,讀取settings配置,運作runnable接口,啟動systemui,啟動persistent應用程式,啟動home,發送action_boot_complete廣播

參考:

<a target="_blank" href="http://www.cnblogs.com/bastard/p/5770573.html">http://www.cnblogs.com/bastard/p/5770573.html</a>

<a target="_blank" href="http://blog.csdn.net/u010083774/article/details/50620355">http://blog.csdn.net/u010083774/article/details/50620355</a>