1. 首页 > 百货 > 包包服装

ActivityThread和ApplicationThread Android应用程序的主线程与AMS通信的桥梁

ActivityThread

ActivityThread是Android系统中负责管理和调度应用程序中Activity的一个重要组件。

本质与功能:

主要职责:

初始化过程:

成员变量和方法:

主线程的主要责任:

ApplicationThread

ApplicationThread是ActivityThread的内部类,是一个Binder对象。ApplicationThread作为IApplicationThread对象的server端,等待client端的请求然后进行处理,其中最大的client就是AMS。

ApplicationThread在Android应用程序启动过程中扮演着重要角色。当ActivityThread的handleBindApplication方法被调用时,会将ApplicationThread与Application对象进行绑定,作为应用程序与系统服务之间进行通信的桥梁。handleBindApplication方法还会调用Application对象的onCreate方法,这是应用程序启动过程中的第一个回调方法。

在Activity的启动逻辑过程中,ApplicationThread的ScheduleActivity方法会通过一个叫H的Handler发送一个启动Activity的信息。ActivityThread也就是我们常说的UI线程或主线程,是程序的入口(main函数),保存了应用中所有的对应组件(如活动、服务和内容提供者等)。

创建根Activity:

Launcher进程向AMS请求创建根Activity,AMS会判断根Activity所需的应用程序进程是否存在并启动,如果不存在请求Zygote进程创建应用程序进程。应用程序进程启动后,AMS会请求应用程序进程创建并启动根Activity。

创建普通Activity:

在应用程序进程中的Activity向AMS请求创建普通Activity(步骤1),AMS会对这个Activty的生命周期管和栈进行管理,校验(AndroidManifest.xml注册文件声明、启动权限)Activity等等。如果Activity满足AMS的校验,(判断进程存在)AMS就会请求应用程序进程中的ActivityThread去创建并启动普通Activity。

总结

ApplicationThread是ActivityThread的一个内部类,实现了IApplicationThread接口,是一个Binder接口,用于跨进程通信(IPC)。ApplicationThread对象作为IApplicationThread的服务端,被AMS等系统服务通过Binder机制进行调用。

ActivityThread是Android应用程序进程的主线程,也就是我们通常所说的UI线程。每个Android应用程序进程都有一个ActivityThread实例,负责创建和管理应用程序的组件(如Activity、Service、BroadcastReceiver等),并处理与这些组件相关的生命周期事件。

ApplicationThread和ActivityThread是紧密相关的。ApplicationThread是ActivityThread的一个内部类,用于处理来自AMS的IPC调用,并将这些调用转换为对ActivityThread中相应方法的调用。AMS通过ApplicationThread与ActivityThread进行通信,从而管理应用程序的生命周期和组件。

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/baobaofuzhuang/35055.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息