HandlerThread 和 Handler
来源:互联网 发布:java分布式模块 编辑:程序博客网 时间:2024/06/05 06:19
HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它有个Looper成员变量。这个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)。
当我们需要一个工作者线程,而不是把它当作一次性消耗品,用过即废弃的话,就可以使用它。
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)。
1 0
- Handler和HandlerThread
- 2.HandlerThread和Handler
- Handler、HandlerThread和AsyncQueryHandler
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- Handler和HandlerThread
- HandlerThread 和 Handler
- Handler,Looper和HandlerThread
- JAVA的ReentrantLock与synchronized 的区别
- 最长上升子序列
- 如何在十天内掌握线性代数
- Lepus-天兔数据库监控系统V3.5安装参考文档
- 静态网站生成器大总结(Static-Site-Generators)
- HandlerThread 和 Handler
- jquery全屏插件
- 深度学习Deep learning:四十一(Dropout简单理解)
- c++ struct queue malloc问题
- Activity页面切换效果
- 多语言版本开发中的中文zh-cn 与 zh-hans 是什么关系、有什么区别?
- mysql处理高并发,防止库存超卖
- debian 下使用qtcreator,c++11 ,boost
- 在Linux上安装TimesTen