>
Window程序也需要和X Window Server一起实现窗口功能程序员需要在不同activitythread的Activity之间传递数据,然而,这个问题本身就有问题所谓传递消息一般是指多个线程之间,而Activity本身并不是线程,ActivityThread才是一个线程,即UI线程同一个程序中activitythread的多个Activity都由ActivityThread进行调用,Activity本身只是一个Java。
在一个Android 程序开始运行activitythread的时候,会单独启动一个Process默认的情况下,所有这个程序中的Activity或者ServiceService和 Activity只是Android提供的Components中的两种, 除此之外还有Content Provider和Broadcast Receiver都会跑在这个Process一个Android 程序默认情况下也只有一个Process,但一个Process下却。
主线程中会构造这两个类的对象但是他们不是线程,你看看继承关系就可以知道ApplicationThread是binder, ActivityThread是一个final类也不是真正的线程如果你用ddms查看某一个进程的所有线程,你会发现它只有一个main thread,当然它可能还有binder thread, jdwp, signal catcher等。
新进程创建后,会执行ActivityThread的main方法,这是APP进程的主线程入口绑定Application 在ActivityThread的main函数中,会调用attach方法attach方法中,会远程调用AMS的attachApplication方法AMS最后会通过远程调用ActivityThread的bindApplication,发送一个BIND_APPLICATION的消息接收到此消息后,通过handle。

两种启动都会调用到Instrumentation类中的execStartActivity的方法,系统最终是通过ActivityThread中的performLaunchActivity完成Activity的创建和启动performLaunchActivity方法主要完成以下工作1通过ActivityClientRecord对象获取启动activity的组件信息 2通过mInstrumentation对象的newActivity方法调用classloader完成。

Handler的作用是发送并处理一个线程关联的Message或Runable在UI线程中创建Handler,在子线程中发送消息Looper从ActivityThread类开始分析,ActivityThread并不是线程,而是开启主线程的类Looper构造方法中创建activitythread了MessageQueue对象,保证了一个线程只对应一个MessageQueue对象Looper死循环不断检查MessageQueue是否有。
十二ActivityThread 和 ApplicationThread 介绍ActivityThread 作为主线程,负责消息循环和 UI 更新,而 ApplicationThread 是其内部类,作为 Binder 对象提供服务十三Instrumentation 作用用于独立控制组件生命周期,实现组件的启动暂停等操作,是 Activity 与系统服务间交互的关键十四最后,为帮助开发。
ActivityThread的创建发生在App进程fork后,通过查找主函数,调用ActivityThread的main函数,完成主线程的正式运行主线程处理进程消息启动Activity管理服务接收和提供者等功能,通过特定的message处理函数实现渲染线程的创建和作用在Android Lollipop版本中引入,用于分担主线程的渲染任务,减轻其负担默认。
相关标签 :
微信医疗(登记+咨询+回访)预约管理系统
云约CRM微信小程序APP系统定制开发
云约CRM体检自定义出号预约管理系统
云约CRM云诊所系统,云门诊,医疗预约音视频在线问诊预约系统
云约CRM新版美容微信预约系统门店版_门店预约管理系统
云约CRM最新ThinkPHP6通用行业的预约小程序(诊所挂号)系统联系电话:18300931024
在线QQ客服:616139763
官方微信:18300931024
官方邮箱: 616139763@qq.com