当前位置: 首页 > news >正文

Android中的Handle底层原理

先上结论:

一个小小的Handle,就能看出你对Android底层源码理解的深浅。

老规矩,如果你能看懂我上面画的这张草图,这篇文章你可以直接跳过!

开干!

1、先对Handle在Android系统中是如何发挥作用的做一个小结:

1)每一个线程,包括UI主线程,有一个ThreadLocalMap变量:threadLocals,想要使用 

      Handler,第一步就是要调用Looper.prepare(),它的作用是创建一个Looper对象,以Looper对象

      的ThreadLocal变量sThreadLocal为键,以Looper对象为value保存在线程的threadLocals中

2)创建handler对象时,会调用Looper.myLooper()方法,从handler所在线程中获取1中创建的

     Looper对象

3)Looper.loop()使消息循环动起来

2、源码解读:

1)、说到Handler就要联系到Thread和其MessageQueue;

2)、一个Thread只有一个Looper,Looper.prepare()即是建立当前线程、消息队列和Looper的对应关系。

private static void pr

http://www.mrgr.cn/news/64523.html

相关文章:

  • labview学习总结
  • Docker使用复习(11.3)
  • 爬虫学习4
  • java学习1
  • 随机生成100组N个数并对比,C++,python,matlab,pair,std::piecewise_construct
  • IP系列之bscan讨论
  • 如何设置和使用低代码平台中的点击事件?
  • redis源码系列--(二)--eventlooop+set流程
  • 常用滤波算法(三)-算术平均滤波法
  • 【51蛋骗鸡单按键控制计数开始暂停复位】
  • 【ChatGPT】通过自定义参数让ChatGPT输出特定格式的文本
  • 同一局域网内A主机连接B主机的虚拟机中的服务
  • C++入门基础知识135—【关于C 库函数 - mktime()】
  • C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(1)
  • 非线性数据结构之树
  • 【Vue3】一文全览基础语法-案例程序及配图版
  • 【C++题解】1970. 判断是什么字符
  • DICOM标准:CT 模块及其在DICOM中的表示详解
  • 【星闪EBM-H63开发板】AT固件的接口简介
  • C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(2)
  • 文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《基于图注意力网络的配电网分布式光伏实时消纳能力评估方法 》
  • 高级 <HarmonyOS第一课>自由流转 的课后习题
  • ZFC in LEAN 之 前集(Pre-set)
  • 递归调用的其中之一的规则
  • LabVIEW离心泵性能优化测试系统
  • Unity性能优化5【物理篇】