之前讲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>