美文网首页框架原理
Android 中Application启动过程

Android 中Application启动过程

作者: zy_zhangyuan88 | 来源:发表于2019-07-09 15:05 被阅读0次

今天就介绍ActivityThread启动之后,是如何启动 Application (基于Android 8.0 系统)。

源码分析

ActivityThread初始化实例化ActivityThread & 创建主线程Handler与Looper接收信息

ActivityThread的attach函数获取ActivityManagerService的代理对象通过代理对象调用attachApplication(),获取启动application所需信息(应用进程相关数据)

在android当中的binder通信机制,那么实际上我们的ActivityManager是有系统服务所调用管理,并且通过在binder接口当中进行调用,这也是为什么我们讲Activity是跨进程访问的原因,在这里获取AMS ,调用方法 attachApplication()

ActivityManagerService的attachApplication函数

在这里面调用attachApplicationLocked()通知ActivityThread启动application(IApplicationThread是ActivityThread的内部类,负责与ActivityManagerService通讯);

在这个方法的后面 sendMessage(H.BIND_APPLICATION, data);

在H 的Hander中handlerMessage中在该message的处理如图:

ActivityThread的handleBindApplication函数:

AMS中调用了ActivityThread的bindApplication函数,其内部其实是完成了Handler切换到主线程,并且最后活调用handleBindApplication(),下面我们看看其内部源码;

一下是这个方法的部分代码片段:

.类关系

ActivityThread:通过IActivityManager类,通知AMS准备application启动所需进程数据 ;

ActivityManagerService:获取application启动所需进程数据 ;

Instrumentation:创建&启动Application;跟踪Application的生命周期

Application启动过程的时序图

Application启动流程.png

相关文章

网友评论

    本文标题:Android 中Application启动过程

    本文链接:https://www.haomeiwen.com/subject/mcuxkctx.html