Launcher启动Activity的过程简述

一、启动过程

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 的工作过程

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容