美文网首页
Launcher启动Activity的过程简述

Launcher启动Activity的过程简述

作者: zhaohui0520 | 来源:发表于2020-09-12 13:36 被阅读0次

    一、启动过程

    1、Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity;
    2、ActivityManagerService通过Binder进程间通信机制通知Launcher进入Paused状态;
    3、Launcher通过Binder进程间通信机制通知ActivityManagerService,它已经准备就绪进入Paused状态,于是ActivityManagerService就创建一个新的进程,用来启动一个ActivityThread实例,而Application即在ActivityThread.main()中被回调了其初始化的代码即将要启动的Activity就是在这个ActivityThread实例中运行;
    4、ActivityThread通过Binder进程间通信机制将一个ApplicationThread类型的Binder对象传递给ActivityManagerService,以便以后ActivityManagerService能够通过这个Binder对象和它进行通信;
    5、ActivityManagerService通过Binder进程间通信机制通知ActivityThread,现在一切准备就绪,它可以真正执行Activity的启动操作了。

    二、示例:启动淘宝

    1、Launcher通知AMS启动淘宝APP的MainActivity,也就是清单文件设置启动的Activity。
    2、AMS记录要启动的Activity信息,并且通知Launcher进入pause状态。
    3、Launcher进入pause状态后,通知AMS已经paused了,可以启动淘宝了。
    4、淘宝app未开启过,所以AMS启动新的进程,并且在新进程中创建ActivityThread对象,执行其中的main函数方法。
    5、淘宝app主线程启动完毕后通知AMS,并传入applicationThread以便通讯。
    6、AMS通知淘宝绑定Application并启动MainActivity。
    7、淘宝启动MainActivitiy,并且创建和关联Context,最后调用onCreate方法。

    详细过程可参考:

    Android Launcher 启动 Activity 的工作过程

    相关文章

      网友评论

          本文标题:Launcher启动Activity的过程简述

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