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 类的学习(转载)相关推荐

  1. RegistryKey类的学习(转载)

    RegistryKey类在.NET的哪个命名空间中Microsoft.Win32 注册表项是注册表中的基本组织单位,好比是Windows资源管理器中的文件夹.每个具体的注册表项都可以有子项,就像文件夹 ...

  2. 学习转载:Linux命令--grep|正则表达式

    转自:https://www.cnblogs.com/chenhuan001/p/6091229.html 感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (globa ...

  3. 【C++】C++类的学习(五)——纯虚函数与抽象类

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 在前面的博客中讲到了虚函数,今天讲述一种特别的虚函数--纯虚函数,以及与之相关的抽象类 ...

  4. 【C++】C++类的学习(三)——运算符重载与友元函数

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 前面的两篇博文中介绍了类的一些基本特性,今天讲一讲运算符重载和友元. 运算符重载 运算 ...

  5. 【C++】C++类的学习(二)——构造函数、析构函数、拷贝构造函数以及this指针

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 1. 前言 在之前的博文< C++类的学习(一)--初识类>中,简单地讲述了类的 ...

  6. 【C++】C++类的学习(一)——初识类

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 C++在C语言的基础上做了一些改进,使得C++具有了面向对象编程(Object Ori ...

  7. 免费中文计算机类编程学习书籍大全

    最全的免费中文计算机类编程学习书籍,转载链接:https://github.com/justjavac/free-programming-books-zh_CN

  8. String类的学习

    String类的学习: String a="a"+"b"+"1"; String b="ab1"; a==b是对的,为什 ...

  9. TS基础2(类)-学习笔记

    文章目录 TS基础2(类)-学习笔记 class类 类的继承 修饰符 类的类型.实现接口 TS基础2(类)-学习笔记 class类 //类 class//首字母大写//类(Class):定义了一件事物 ...

最新文章

  1. 拥有全球最大指令集的“意念打字“系统,创下世界纪录
  2. python中带*(单星号)的变量和**(双星号)的变量
  3. 还在纠结Dapper或者EF Core?不妨试试“混合ORM”--RepoDb
  4. python模块和类和方法_Python类、模块、包的区别
  5. mysql中时间类型datetime,timestamp与int的区别
  6. 题目1111:单词替换
  7. 在macOS下制作黑苹果镜像
  8. Base64基本原理
  9. wmi服务怎么关?wmi服务关闭有影响吗?
  10. CORS跨域-Nginx使用方法(Access-Control-Allow-Origin错误提示)
  11. python怎么画钟表表盘,python ——钟表,,1、表盘 1 fro
  12. es java 创建索引_Elasticsearch(ES) 创建索引
  13. 小迪安全第10天 信息收集,资产监控拓展
  14. 搬家后计算机总重启,电脑无故重启是这一个月来的事了,我刚刚搬家电脑搬到新家那用了没几 爱问知识人...
  15. dub的sdl配置文件中文帮助
  16. 什么是缓存系统三座大山
  17. 串口工具Kermit
  18. Matlab绘制特殊图形------直方图
  19. Python 用于电路课程
  20. 简谈:如何学习FPGA

热门文章

  1. Springboot整合freemarker和相应的语法
  2. java中参数存储_Java中函数参数传递和数据存储
  3. c语言87,C语言程序设计87300.doc
  4. Linux的shell脚本函数教程
  5. 一周一论文(翻译 总结)— [SOCC 13] jVerbs Ultra-Low Latency for Data Center Applications 在JVM虚拟机上构建RDMA的verbs操作
  6. instant.now时区不正确_Centos8如何更改时区
  7. cobbler安装和基本配置
  8. 没有可用于当前位置的源代码
  9. [BZOJ3693]圆桌会议[霍尔定理+线段树]
  10. [LeetCode] Longest Substring Without Repeating Characters