HandlerThread 类的学习(转载)
HandlerThread继承于Thread,所以它本质就是个Thread。HandlerThread类用于方便的创建一个含有looper的线程类,looper用来创建handler类。我们一般不创建looper对象,直接调用HandlerThread即可。HandlerThread本身实现了循环处理消息的功能,不用再直接调用Looper.prepare()和Looper.loop()方法。与普通Thread的差别就在于,它有个Looper成员变量。这个Looper其实就是对消息队列以及队列处理逻辑的封装,简单说就是消息队列+消息循环。
使用HandlerThread步骤如下:
//步骤1:创新HandlerThread的一个对象,并开启这个线程,HandlerThread将通过Looper来处理Handler对来中的消息,也就是如果发现Handler中有消息,将在HandlerThread这个线程中进行处理。
HandlerThread ht = new HandlerThread(“hander_thread”);
//步骤2:启动handerhandler这个线程;
ht.start();
//步骤3:创建handler中,带上Looper的参数,即handlerThread.getLooper()。注意,此处理必须在HandlerThread启动后才能调用,否则会报错 ,getLooper()会返回null,则程序异常出错
Handler handler = new Handler(ht.getLooper()){
….
public void handleMessage(Message msg){
… … /*这里的处理,将不在主线程中执行,而在HandlerThread线程中执行,可以通过Thread.currentThread().getId()或者Thread.currentThread().getName()来确定*/
}
};
常用方法:
- public Looper getLooper():这个方法返回与此线程相关的Looper。如果该线程不能启动或是由于某种原因isAlive()方法返回false,则这个方法返回null,假如这个线程已经启动,那么此方法将阻塞,直到looper被初始化。
- public int getThreadId():返回线程的标志。
转载于:https://www.cnblogs.com/porter/p/3142454.html
HandlerThread 类的学习(转载)相关推荐
- RegistryKey类的学习(转载)
RegistryKey类在.NET的哪个命名空间中Microsoft.Win32 注册表项是注册表中的基本组织单位,好比是Windows资源管理器中的文件夹.每个具体的注册表项都可以有子项,就像文件夹 ...
- 学习转载:Linux命令--grep|正则表达式
转自:https://www.cnblogs.com/chenhuan001/p/6091229.html 感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (globa ...
- 【C++】C++类的学习(五)——纯虚函数与抽象类
[fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 在前面的博客中讲到了虚函数,今天讲述一种特别的虚函数--纯虚函数,以及与之相关的抽象类 ...
- 【C++】C++类的学习(三)——运算符重载与友元函数
[fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 前面的两篇博文中介绍了类的一些基本特性,今天讲一讲运算符重载和友元. 运算符重载 运算 ...
- 【C++】C++类的学习(二)——构造函数、析构函数、拷贝构造函数以及this指针
[fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 1. 前言 在之前的博文< C++类的学习(一)--初识类>中,简单地讲述了类的 ...
- 【C++】C++类的学习(一)——初识类
[fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 C++在C语言的基础上做了一些改进,使得C++具有了面向对象编程(Object Ori ...
- 免费中文计算机类编程学习书籍大全
最全的免费中文计算机类编程学习书籍,转载链接:https://github.com/justjavac/free-programming-books-zh_CN
- String类的学习
String类的学习: String a="a"+"b"+"1"; String b="ab1"; a==b是对的,为什 ...
- TS基础2(类)-学习笔记
文章目录 TS基础2(类)-学习笔记 class类 类的继承 修饰符 类的类型.实现接口 TS基础2(类)-学习笔记 class类 //类 class//首字母大写//类(Class):定义了一件事物 ...
最新文章
- 拥有全球最大指令集的“意念打字“系统,创下世界纪录
- python中带*(单星号)的变量和**(双星号)的变量
- 还在纠结Dapper或者EF Core?不妨试试“混合ORM”--RepoDb
- python模块和类和方法_Python类、模块、包的区别
- mysql中时间类型datetime,timestamp与int的区别
- 题目1111:单词替换
- 在macOS下制作黑苹果镜像
- Base64基本原理
- wmi服务怎么关?wmi服务关闭有影响吗?
- CORS跨域-Nginx使用方法(Access-Control-Allow-Origin错误提示)
- python怎么画钟表表盘,python ——钟表,,1、表盘 1 fro
- es java 创建索引_Elasticsearch(ES) 创建索引
- 小迪安全第10天 信息收集,资产监控拓展
- 搬家后计算机总重启,电脑无故重启是这一个月来的事了,我刚刚搬家电脑搬到新家那用了没几 爱问知识人...
- dub的sdl配置文件中文帮助
- 什么是缓存系统三座大山
- 串口工具Kermit
- Matlab绘制特殊图形------直方图
- Python 用于电路课程
- 简谈:如何学习FPGA
热门文章
- Springboot整合freemarker和相应的语法
- java中参数存储_Java中函数参数传递和数据存储
- c语言87,C语言程序设计87300.doc
- Linux的shell脚本函数教程
- 一周一论文(翻译 总结)— [SOCC 13] jVerbs Ultra-Low Latency for Data Center Applications 在JVM虚拟机上构建RDMA的verbs操作
- instant.now时区不正确_Centos8如何更改时区
- cobbler安装和基本配置
- 没有可用于当前位置的源代码
- [BZOJ3693]圆桌会议[霍尔定理+线段树]
- [LeetCode] Longest Substring Without Repeating Characters