>
产品文档 前端技术 后端技术 编程语言 数据库 人工智能 大数据云计算 运维技术 操作系统 数据结构与算法 Java C++语言 Python PHP

activitythread,activitythread详解

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。

activitythread,activitythread详解

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

activitythread,activitythread详解

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版本中引入,用于分担主线程的渲染任务,减轻其负担默认。

相关标签 :

上一篇: 源代码迅雷下载,源代码bd1080p下载迅雷

下一篇: string.h,string和char数组的区别