之前講android的view的繪制原理和流程的時候,講到過在android調用setcontentview之後,android調用了一個prepretravle的方法,這裡面就提到了activitymanagerservice。
activitymanagerservice提供的主要功能:
(1)統一排程各應用程式的activity
(2)記憶體管理
(3)程序管理
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>