天天看点

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>