Activity启动流程源码分析

开始切入点,就从一个Activity启动另外一个Activity开始吧


演示代码


Activity生命周期流程图

好了,开始寻找onPause方法的执行吧,源码之旅开始喽


Activity类中


Instrumentation类


ActivityManagerService类


ActivityStater类


ActivityStackSupervisor类


ActivityStack类


ActivityThread类


Instrumenttation类


Activity类 执行onPause方法

好了 找到上一个当前Activity的onPause方法,开始后 我们开始找下一个Activity开启的执行方法啦


ActivityStack类


(上一个找到pause方法后面 有开启开一个Activity的方法)


ActivityStackSupersisor类


ActivityThread类


ActivityThread类


Instrumentation类


Activity类


ActivityThread类

上图ActivityThread中的handLaunchActivity中 Oncreate方法执行完之后 会执行onReuse方法


Activity类


Instrumentation类
Activity类 补充而已

总结:

** ActivityManagerService** 组件通信系统核心管理类 (ActivityManagerNative)IPC通信

** ActivityStackSupervisor**  管理整个手机的Activity任务栈

** ActivityStac**   Activity栈(任务栈)

** PackageManagerService**  主要负责对系统的apk进行管理,不管是系统apk(/system/app),还是我们手工安装上去的,系统所有的apk都是由其管理的。

** ActivityThread**  Activity的入口是onCreate方法,Android上一个应用的入口是ActivityThread。和普通的Java类一样有一个main方法。用于控制与管理一个应用进程的主线程的操作,包括管理与处理activity manager发送过来的关于activities、广播以及其他的操作请求

ActivityManagerService和ActivityStack位于同一个进程中,而ApplicationThread和ActivityThread位于另一个进程中。其中,ActivityManagerService是负责管理Activity的生命周期的,ActivityManagerService还借助ActivityStack是来把所有的Activity按照后进先出的顺序放在一个堆栈中;对于每一个应用程序来说,都有一个ActivityThread来表示应用程序的主进程,而每一个ActivityThread都包含有一个ApplicationThread实例,它是一个Binder对象,负责和其它进程进行通信。

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

推荐阅读更多精彩内容