什么是Handler(二)
1. 如何下载Android源代码
2. ThreadLocal初步介绍
3. Handler相关代码执行流程
吧
1. 如何下载Android源代码
SDK Manager下载, 下图所示
下载完之后在文件夹
2. ThreadLocal初步介绍
线程本地变量
代码回顾
1 <pre> 2 * class LooperThread extends Thread { 3 * public Handler mHandler; 4 * 5 * public void run() { 6 * Looper.prepare(); 7 * 8 * mHandler = new Handler() { 9 * public void handleMessage(Message msg) { 10 * // process incoming messages here 11 * } 12 * }; 13 * 14 * Looper.loop(); 15 * } 16 * }</pre>
Looper、Thread、Handler一一对应, 一个Looper存在于一个Thread中
3. Handler相关代码执行流程
查看相关方法的具体代码, 可知
1 class LooperThread extends Thread { 2 public Handler mHandler; 3 public void run() { 4 Looper.prepare(); //生成Looper对象, 并把Looper与当前线程对象形成键值对, 存放在ThreadLocald 当中 5 mHandler = new Handler() //生成Handler对象, 调用Loop的MyLooper方法,根据键得到与Handler对应的Looper对象取出来(从ThreadLocal中取出) 6 { 7 //实际上,Looper和Handler之间是通过ThreadLocal建立一一对应的连接 8 public void handleMessage(Message msg) { 9 // process incoming messages here 10 } 11 }; 12 Looper.loop(); //循环从消息队列往外读数据 13 } 14 }
转载于:https://www.cnblogs.com/iMirror/p/3962461.html
什么是Handler(二)相关推荐
- 关于Handler二三事(下)
消息的注册到业务的实现 从接触呼叫业务的第一天起,我就一直琢磨代码里成群结队的registerXXXX方法跟notifyXXXX方法究竟是个怎么关系. 一个消息(Message)从注册到被处理(han ...
- 【Android 异步操作】HandlerThread 示例 ( 初始化并执行 | 获取Looper | 获取 Handler | 获取消息队列 | 设置空闲队列 | 代码示例 )
文章目录 一.HandlerThread 初始化 二.HandlerThread 获取Looper 三.HandlerThread 获取消息队列 MessageQueue 四.HandlerThrea ...
- Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline
Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向 ...
- 安卓基础学习之handler
安卓基础学习之handler 文章目录 安卓基础学习之handler 前言 一.Handler 二.handlder的使用流程讲解 1.简单的示例 2.handler的一些方法 总结 前言 记录安卓开 ...
- Handler的理解
参考 "酱爆大头菜":Handler就好比你开了个餐馆 - 掘金 CSDN handler一 本文就以生活点餐的例子再结合源码原理进行解析.希望对你有一点帮助. 来,咱们进入角色. ...
- 【ES6】Proxy对象
[ES6]Proxy对象 一.Proxy的基本用法 二.Proxy示例的方法 1)get() 2)set() 3)apply() 查看更多ES6教学文章: 参考文献 引言:ES6规范里面新增了Prox ...
- 第二篇:白话tornado源码之待请求阶段
上篇<白话tornado源码之一个脚本引发的血案>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是torna ...
- 【Netty】Netty 核心组件 ( ChannelPipeline 中的 ChannelHandlerContext 双向链表分析 )
文章目录 一. 代码示例分析 二. ChannelHandlerContext 双向链表类型 三. Pipeline / ChannelPipeline 管道内双向链表分析 四. 数据入站与出站 接上 ...
- 我也来说说js的事件机制
原文链接:http://www.w3cfuns.com/notes/17398/8062de2558ef495ce6cb7679f940ae5c.html 学js,不懂事件机制,基本可以说学了js,就 ...
最新文章
- CV业务落地用Transformer吗?
- [转载] New Concept English 1——Lesson 14 What colour's your…?
- 人工智障学习笔记——机器学习(6)协同过滤
- 为什么打完篮球后手接触篮球杆会有触电感?
- 比较ipv6有状态与无状态地址分配工作特点_IPv6环境获取IPV6地址,无状态地址分配,一分钟了解下...
- tensorflow基础(2)-tf.argmax和axis
- mysql不能删除外键吗,为什么mysql不允许删除外键?
- python语言的主网址-python调用浏览器,打开一个网址
- 【渝粤题库】陕西师范大学152201 公共行政学
- Delphi7 在Windows 7上无法打开帮助文档
- 微信文章互阅python脚本,一天可刷120分
- 索尼笔记本笔记本计算机在哪里设置,索尼vaio笔记本怎么进bios设置|索尼笔记本进bios按什么键...
- scratch打棒球游戏 电子学会图形化编程scratch等级考试四级真题和答案解析2019-12
- 四分位数算法记录(含java代码实现)
- 脱壳进阶篇——IAT修复与解密
- markdown生成目录
- Java课程设计报告--绩效考核信息管理系统
- 李学斌:论复杂系统中的应用间协作V3
- Room cannot verify the data integrity. Looks like you‘ve changed schema but forgot to update the ve
- 技术水平真的很重要!技术详细介绍
热门文章
- 玻璃体混浊当前的治疗方案汇总
- Cannot resolve field [content], input field list:[contents].
- mapPartition方法与map方法的区别(转载)
- 批量绘制train和test关于特征上的差异
- Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
- Qt5使用windeployqt后 exe文件还是无法执行 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
- pytorch——torch.backends.cudnn.benchmark = True
- 五分钟用vue实现一个五星打分效果
- 开源大数据周刊-第102期
- BackTrack5汉化后打开Txt乱码解决方法