大白安卓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中的生命周期方法中完成的。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容