Android AMS——创建Application(七)

        与在 App 内部启动一个 Activity 的不同之处在于,点击桌面 Launcher 首次启动一个应用程序的时候,会先去创建一个该应用程序对应的进程,然后执行 ActivityThread 的 main() 方法去创建该应用对应的 Application,然后再去启动首页 Activity。前面已经分析了进程的创建和启动首页 activtiy,这一篇文章我们对创建该应用对应的 Application 单独分析。

一、创建Application

        前面分析通过 Process 里的 start 创建新的进程,AMS 通过 Zygote 创建应用进程,应用进程启动完成后通知 AMS,AMS 再通知应用创建 Application 对象。而 ActivityThread 类的 main() 函数是应用的入口函数。

1、ActivityThread

源码位置:/frameworks/base/core/java/android/app/ActivityThread.java

main

public static void main(String[] args) {
    ……
    //创建一个主线程的looper
    Looper.prepareMainLooper();
    ……
    ActivityThread thread = new ActivityThread();
    // 创建application
    thread.attach(false, startSeq);
    ……
    Looper.loop();
 
    throw new RuntimeException("Main thread loop unexpectedly exited");
}

attach

 
 

你可能感兴趣的:(Android,AMS,android,AMS)