Android Activity的启动流程分析-AMS和ActivityThread Binder通讯模型

文章目录

在这里插入图片描述
我们先对图中的具体java文件做个介绍,便于后面分析Activity的启动流程做铺垫。

1.Activity.java 路径位于:\frameworks\base\core\java\android\app\Activity.java
说明:该类是与用户交互的对象,同时也是APK应用程序运行的最小单元。ActivityThread类会根据用户的操作选择运行哪个Activity。当前运行的Activity是出于resume状态(有且仅有一个),其他Activity出于pause或stop状态。

2.Instrumentation.java 路径位于 :\frameworks\base\core\java\android\app\Instrumentation.java
说明: 该类用于具体操作某个Activity的功能----单向(oneway)调用AMS以及统计、测量该应用程序的所有开销。
一个Instrumentation类对应于一个进程。每个Activity内部都有一个该Instrumentation对象的引用。

3.ActivityStackSupervisor.java 路径位于:/frameworks/base/core/proto/android/server/ActivityStackSupervisor.java
说明:ActivityStackSupervisor是ActivityStack的总管 。

4.ActivityManagerService.java 路径位于: \frameworks\base\services\java\com\android\server\am\ActivityManagerService.java
说明:该类是一个Binder类,即可实现跨进程通信。因此可以接受从客户端,例如Instrumentation、Context等调用过来的信息。ActivityManagerService提供了全局的代理对象,供IPC调用。

5.ActivityStack.java: 路径位于:/frameworks/base/services/core/java/com/android/server/wm/ActivityStack.java
说明:Activity堆栈,其中的ActivityRecord是通过TaskRecord这一层间接地被管理着。

6.ApplicationThread .java 是ActivityThread的内部类
说明:Binder类 ,主用功能是接受从AMS传递过来的消息,做处理后转发给H类去进一步处理。

7.ActivityThread.java 路径位于:\frameworks\base\core\java\android\app\ActivityThread.java
说明: 该类为应用程序(即APK包)所对应进程(一个进程里可能有多个应用程序)的主线程类,即我们通常所说的UI线程。
一个ActivityThread类对应于一个进程。最重要的是,每个应用程序的入口是该类中的static main()函数 。

8.H类 是ActivityThread的内部类
说明 :H类是一个Hander子类 ,该类仅仅是为了异步调用而设计的,使用方法同Hander类一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值