HandlerThread
来源:互联网 发布:java框架整合 编辑:程序博客网 时间:2024/06/08 06:54
handlerthread比thread多封装了looper
当我们需要一个工作者线程,而不是把它当作一次性消耗品,用过即废弃的话,就可以使用它。
Handler在android里负责发送和处理消息。它的主要用途有:
1)按计划发送消息或执行某个Runnanble(使用POST方法);
2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)
默认情况下,Handler接受的是当前线程下的消息循环实例(使用Handler(Looper looper)、Handler(Looper looper, Handler.Callback callback) 可以指定线程),同时一个消息队列可以被当前线程中的多个对象进行分发、处理(在UI线程中,系统已经有一个Activity来处理了,你可以再起若干个 Handler来处理)。在实例化Handler的时候,Looper可以是任意线程的,只要有Handler的指针,任何线程也都可以 sendMessage。
Handler对于Message的处理不是并发的。一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的(handleMessage()方法里不应该有耗时操作,可以将耗时操作放在 其他线程执行,操作完后发送Message(通过sendMessges方法),然后由handleMessage()更新UI)。
HandlerThread创建一个独立的线程,它拥有自己消息循环队列;
Handler跟一个线程和该线程对应的消息队列绑定,它可以往这个消息队列发送消息或者响应该队列的消息;
runOnUiThread()是让将要执行的代码放到一个UI线程里面去执行,如果当前线程是UI线程,代码将立即执行;如果当前线程不是UI线程,则将要执行的操作发送到UI线程的消息队列里,等待执行。
Handler跟一个线程和该线程对应的消息队列绑定,它可以往这个消息队列发送消息或者响应该队列的消息;
runOnUiThread()是让将要执行的代码放到一个UI线程里面去执行,如果当前线程是UI线程,代码将立即执行;如果当前线程不是UI线程,则将要执行的操作发送到UI线程的消息队列里,等待执行。
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- handlerThread
- HandlerThread
- HandlerThread
- HandlerThread
- 美国硅谷各大公司软件工程师工资排名
- c语言总结
- 高人十大特征,你具备几个
- cocos2d-x Effect效果显示
- 排序之一(插入排序、归并排序)
- HandlerThread
- Prim算法和Kruskal算法
- Unity3d连接SQLServer数据库
- Java中的异常处理
- HA高可用性的IPSec VPN配置实例
- ubuntu常用的命令
- <iostream.h>和<isotream>的区别
- HDU-2066 一个人的旅行 最短路
- Python里的闭包和AOP