Activity本质和内部实现机制
今天把Activity全部内容精简一遍,activity最后一篇!
Activity本质和内部机制
与Activity相关的Framework层类
ActivityThread本质上不是一个线程,是一个java类,ActivityThread是所在主线程中的一个类,它的启动是调用main方法,其中内部有几个重点方法:
Looper.prepareMainLooper();
ActivityThread thread = new ActivityThread();
thread.attach(false);
Looper.loop()
ActivityThread的main()中,首先调用Looper.prepareMainLooper();然后调用ActivityThread()方法,但事实上这个方法并没有继承什么,是一个普通的方法,最重要的是attach()方法,这个方法主要与ActivityManagerService进行交互,首先调用ActivityManagerNative对象,这是一个远程代理接口,以获取远程代理对象。之后调用attachApplication(),这个也是对Bundle传输数据。
ActivityThread启动完成后如何通知AMS呢?主要的方法有:
IActivityManager mgr = ActivityManagerNative.getDefault();
mgr.attachApplication(mAppThread);
下面来看ApplicationThread,这是一个很关键的类,它是继承自ApplicationThreadNative类,ApplicationThreadNative类是一个Binder的子类,说明ApplicationThread需要与远程端进行通信,即与ActivityManagerService进行通信,通信的过程封装成一个Binder对象。
ActivityClientRecord是客户端Activity的一个描述的类,是对客户端的描述,
Context是一个接口,Activity其实是Context的一个子类。
Activity的生命周期的回调:
Instrumentation用于辅助创建Application, 对生命周期的管理,启动Activity。
ActivityManagerNative用于与远程Service进行数据交互
H handle也是与远程数据交互相关的类,调用了,handleLaunchActivity, performLaunchActivity。 classLoader加载相关Activity,Application对象创立,之后,activity.attach()
额,源码看的心力憔悴,认输,这次就先这样吧,等我酝酿一段时间再说吧……尴尬ing(口吐白沫中……)
Activity本质和内部实现机制相关推荐
- 浅谈SQL Server内部运行机制
原文:浅谈SQL Server内部运行机制 对于已经很熟悉T-SQL的读者,或者对于较专业的DBA来说,逻辑的增删改查,或者较复杂的SQL语句,都是非常简单的,不存在任何挑战,不值得一提,那么,SQL ...
- Vue.js 内部运行机制之总结 常见问题解答
Vue.js 内部运行机制之总结 & 常见问题解答 总结 在本小册的第一节中,笔者对 Vue.js 内部运行机制做了一个全局的概览,当时通过下面这张图把 Vue.js 拆分成一个一个小模块来介 ...
- HFDS 内部工作机制
HDFS 内部工作机制 HDFS集群分为两大角色:NameNode.DataNode (Secondary Namenode) NameNode 负责管理整个文件系统的元数据 DataNode 负责管 ...
- 图解HashMap和HashSet的内部工作机制
转载自 图解HashMap和HashSet的内部工作机制 HashMap 和 HashSet 内部是如何工作的?散列函数(hashing function)是什么? HashMap 不仅是一个常用的数 ...
- ActiveSupport::Concern 和 gem 'name_of_person'(300✨) 的内部运行机制分析
理解ActiveRecord::Concern: 参考:include和extend的区别: https://www.cnblogs.com/chentianwei/p/9408963.html 传统 ...
- 飞鸽传书联系企业内部管理机制
IM飞鸽能使企业内部管理机制联系起来,能从一个全新的视角看到IM飞鸽(飞鸽传书)软件对于企业用户的意义.同时IM飞鸽(飞鸽传书)软件的突出优势不是去追求差异化和个性化,而在于发挥局域网特有的效率优势, ...
- VC++的学习(基于VS2008)——windows程序内部运行机制
昨天和今天都在学习windows程序的内部运行机制,再次学习这一章,我明显感到条理清晰了,原来这一章是讲我们所用的电脑,这样一个windows平台下程序运行的内部机制的.windows应用程序下最重要 ...
- ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补
点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一篇 ICCV 2019 的文章An Internal Learning Approach to Video Inpainting,该文在 ...
- javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object
一个先有鸡还是先有蛋的问题,先看一段代码: a = 2; var a; console.log(a); 通常我们都说JavaScript代码是由上到下一行一行执行,但实际这段代码输出的结果是2.但这段 ...
最新文章
- 图解Transformer(完整版)!
- Redis学习笔记02--主从数据库配置
- 数据集按类划分_用特别设计的损失处理非均衡数据
- 高速串行总线设计基础(三)SERDES的通用结构介绍
- 总结ASP.NET中的各种弹窗
- STM32的I/O口的八种工作模式
- 推辞掉得不是你的工作,而是你的未来
- 我把自己的下半生用来写程序
- 斜齿轮传动几何尺寸计算例2:斜齿角度变位-齿轮手册第2版表2.2-9
- PostgreSQL SPI 中的错误处理
- 黑马博客——详细步骤(六)项目功能的实现之用户信息删除
- 用信号量实现进程互斥示例和解决哲学家就餐问题
- 简明python教程-Python简明入门教程
- 微信小程序云开发-时间存储、转换、比较
- Gnu Screen用法 【转】
- java 坦克大战暂停_java实现坦克大战游戏
- HTTP防病毒网关(包括UTM)存在的问题
- Word插入打勾复选框
- MSG360虚拟服务器,H3C MSG360-10:简单设置+多场景结合应用
- android下拉水波纹,RecyclerView实现水波纹点击效果