大白安卓APP启动流程

       最近研究了一下安卓APP启动的过程,我们在使用APP的过程当中最直接的看到的就是界面,也就是安卓的Actiivty,那么我们先来说一下Activity的启动流程。

    当我们点击启动一个APP以后,首先会初始化4个线程,这其中就包括我们的UI线程,也就是ActivityThread,并根据AMS的要求(通过IApplicationThread接口,AMS为Client、ActivityThread.ApplicationThread为Server)负责调度和执行activities、broadcasts和其它操作,ActivityThread是整个应用启动的核心,他负责调度AMS中的activityStack,当然这其中是进程间通信,主要是通过APP启动以后开启的另外一个线程也就是ApplicationThread来实现和AMS之间的通信,ApplicationThread其实是ActivityThread的内部类,他其实就是一个BInder对象,安卓中进程间通信依赖的是Binder驱动,第三个线程即时GC垃圾回收线程,第四个就是ViewRoot.w也是一个Binder对象,主要负责和WMS来进行通信,这又设计另外一个知识点,每一个Activity都是依赖在一个Window窗口上的。

Activity负责通过APP内部的binder对象来调度系统中的AMS中的AtivityStack中的activity来进行控制activity,拿到之后回调activity中各个生命周期方法,来执行相应的操作。ativity的绘制流程就是在activity中的生命周期方法中完成的。 

你可能感兴趣的:(大白安卓APP启动流程)