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相關內容。













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章