美文网首页
ActivityThread和ApplicationThread

ActivityThread和ApplicationThread

作者: Bfmall | 来源:发表于2023-07-05 20:46 被阅读0次

    ActivityThread和ApplicationThread
    个人总结,原文地址:https://blog.csdn.net/qq_37196748/article/details/106478134

    1.ActivityThread:主线程、UI线程,程序的入口(main函数),不是线程是运行在主线程中的一个对象。
    2.ApplicationThread是ActivityThread和AMS交互的中间桥梁。
    3.ApplicationThread 和ActivityThread之间的联系是通过Handler,ActivityThread的变量final H mH = new H(); 私有内部类H继承自Handler,是主线程的handler,处理一些消息事务。
    4.关于ApplicationThread:
    是ActivityThread的私有变量,也是一个Binder对象,ApplicationThread是Client端的Binder,里面有操作scheduleXX方法处理四大组件的生命周期方法,所以AMS(AMS是Android系统最为核心的服务之一,其职责包括四大核心组件与进程的管理)服务想要调用启动组件,那就必须持有ApplicationThread的实例,如调用ApplicationThread的scheduleLaunchActivity方法,最后在scheduleLaunchActivity方法中sendMessage方法发送消息,ActivityThread中处理消息。
    5.简述Activity的启动:
    分为两种根Activity和普通Activity,根Ay设计进程的创建。
    首先Launcher进程向AMS请求创建根Activity,AMS会判断根Activity所需的应用程序进程是否存在并启动,如果不存在就会请求Zygote进程创建应用程序进程。应用程序进程启动后,AMS会请求应用程序进程创建并启动根Activity。


    image.png

    普通的Activity启动:


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

    ————————————————
    版权声明:本文为CSDN博主「Wanderer_hao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_33346542/article/details/116990704

    相关文章

      网友评论

          本文标题:ActivityThread和ApplicationThread

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