今天把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本质和内部实现机制相关推荐

  1. 浅谈SQL Server内部运行机制

    原文:浅谈SQL Server内部运行机制 对于已经很熟悉T-SQL的读者,或者对于较专业的DBA来说,逻辑的增删改查,或者较复杂的SQL语句,都是非常简单的,不存在任何挑战,不值得一提,那么,SQL ...

  2. Vue.js 内部运行机制之总结 常见问题解答

    Vue.js 内部运行机制之总结 & 常见问题解答 总结 在本小册的第一节中,笔者对 Vue.js 内部运行机制做了一个全局的概览,当时通过下面这张图把 Vue.js 拆分成一个一个小模块来介 ...

  3. HFDS 内部工作机制

    HDFS 内部工作机制 HDFS集群分为两大角色:NameNode.DataNode (Secondary Namenode) NameNode 负责管理整个文件系统的元数据 DataNode 负责管 ...

  4. 图解HashMap和HashSet的内部工作机制

    转载自 图解HashMap和HashSet的内部工作机制 HashMap 和 HashSet 内部是如何工作的?散列函数(hashing function)是什么? HashMap 不仅是一个常用的数 ...

  5. ActiveSupport::Concern 和 gem 'name_of_person'(300✨) 的内部运行机制分析

    理解ActiveRecord::Concern: 参考:include和extend的区别: https://www.cnblogs.com/chentianwei/p/9408963.html 传统 ...

  6. 飞鸽传书联系企业内部管理机制

    IM飞鸽能使企业内部管理机制联系起来,能从一个全新的视角看到IM飞鸽(飞鸽传书)软件对于企业用户的意义.同时IM飞鸽(飞鸽传书)软件的突出优势不是去追求差异化和个性化,而在于发挥局域网特有的效率优势, ...

  7. VC++的学习(基于VS2008)——windows程序内部运行机制

    昨天和今天都在学习windows程序的内部运行机制,再次学习这一章,我明显感到条理清晰了,原来这一章是讲我们所用的电脑,这样一个windows平台下程序运行的内部机制的.windows应用程序下最重要 ...

  8. ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补

    点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一篇 ICCV 2019 的文章An Internal Learning Approach to Video Inpainting,该文在 ...

  9. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object

    一个先有鸡还是先有蛋的问题,先看一段代码: a = 2; var a; console.log(a); 通常我们都说JavaScript代码是由上到下一行一行执行,但实际这段代码输出的结果是2.但这段 ...

最新文章

  1. 图解Transformer(完整版)!
  2. Redis学习笔记02--主从数据库配置
  3. 数据集按类划分_用特别设计的损失处理非均衡数据
  4. 高速串行总线设计基础(三)SERDES的通用结构介绍
  5. 总结ASP.NET中的各种弹窗
  6. STM32的I/O口的八种工作模式
  7. 推辞掉得不是你的工作,而是你的未来
  8. 我把自己的下半生用来写程序
  9. 斜齿轮传动几何尺寸计算例2:斜齿角度变位-齿轮手册第2版表2.2-9
  10. PostgreSQL SPI 中的错误处理
  11. 黑马博客——详细步骤(六)项目功能的实现之用户信息删除
  12. 用信号量实现进程互斥示例和解决哲学家就餐问题
  13. 简明python教程-Python简明入门教程
  14. 微信小程序云开发-时间存储、转换、比较
  15. Gnu Screen用法 【转】
  16. java 坦克大战暂停_java实现坦克大战游戏
  17. HTTP防病毒网关(包括UTM)存在的问题
  18. Word插入打勾复选框
  19. MSG360虚拟服务器,H3C MSG360-10:简单设置+多场景结合应用
  20. android下拉水波纹,RecyclerView实现水波纹点击效果

热门文章

  1. python 常量_python学习丨变量与常量
  2. Windows下Memcache的安装及PHP扩展配置方法
  3. java应用:csv文件的读写
  4. 防止js全局变量污染方法总结-待续
  5. Jquery_改变背景颜色
  6. tensorflow 使用
  7. Oracle 学习系列之一(表空间与表结构)
  8. 一种基于openflow的虚拟化层软件flowvisor的API测试
  9. cocos2d-x游戏实例(8)-A星算法(4)
  10. 技术团队新官上任之基层篇