美文网首页框架原理
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