AMS对象创建过程

本文简要介绍AMS对象创建过程。

备注:基于android5.0代码,主要以伪代码的形式介绍启动流程,详细过程参考本文移步android源码。

AMS 由SysterServer.java的ServerThread线程创建,本文以此为起点分析AMS启动过程。

    1. AMS继承ActivityManagerNative,并实现了Watchdog.Monitor和BatteryStatsImpl.BatteryCallback接口;ActivityManagerNative 继承Binder,实现了IActivityManager;

    2. 客户端使用ActivityManager类通过内部调用ActivityManagerNative的getDefault方法得到一个ActivityManagerProxy代理对象来和AMS交互。


                                     

                                                                                               图 1. AMS继承关系图

1、 AMS创建

  1.1 SystemServer.java::main()

    /**  
     * The main entry point from zygote.
     */
    public static void main(String[] args) {
        new SystemServer().run();
    }


    1.2   SystemServer.java::run()

<pre name="code" class="java">    private void run() {
       // Start services.
        try {  
            startBootstrapServices();
   
        } catch (Throwable ex) {
           ......
        }
       

     1.3 SystemServer.java:: startBootstrapServices()              

<pre name="code" class="java">     private void startBootstrapServices() {
        ......
        mActivityManagerService = mSystemServiceManager.startService(
                ActivityManagerService.Lifecycle.class).getService();
         ......
      }
    备注:该部分代码设计SystemServer启动,以及SystemServer创建上下文等过程,后续分析SystemServer部分再详细讨论,此处仅需要知道通过该方法调用
    会返回一个创建好的AMS对象
 

      

    1.4  ActivityManagerService.Lifecycle

       public Lifecycle(Context context) {
            super(context);
            mService = new ActivityManagerService(context);
        }
        在Lifecycle的构造方法中,创建了AMS对象。
本节作为AMS分析的初步,下一节继续分析AMS和SystemServer相关内容。




 








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值