ThreadHandlerHandlerThread的区

参考:http://waylenw.github.io/Android/android-handler-thread-usage/

 

Thread:

普通的异步线程。

Handler:

异步更新UI的,更详细的说是用来做线程间的通信的,更新UI时是子线程与UI主线程之间的通信。

Thread和Handler都比较熟,就不看了。

HandlerThread:

子线程与子线程之间的通信。

HandlerThread源码:

Thread、Handler、HandlerThread的区别

它的内部创建一个带有looper的线程,looper对象可以用于创建Handler类来进行调度。

 

HandlerThread使用:

1、创建HandlerThread并且start

Thread、Handler、HandlerThread的区别

2、创建handler并为hander设置handler(因为只有主线程里面的hander有默认的looper,新建的handler都需要自己创建looper)

Thread、Handler、HandlerThread的区别

3、创建一个子线程并发送消息

Thread、Handler、HandlerThread的区别

4、释放资源

Thread、Handler、HandlerThread的区别

实际使用:

这里模拟一个异步下载图片的例子:

Thread、Handler、HandlerThread的区别

通过点击download去下载图片并加载。

Thread、Handler、HandlerThread的区别

在这里handler运行在线程中,同时在该线程中,通过handler+message去有序地运行其他的线程。


优缺点

HandlerThread适合在只需要在一个工作线程(非UI线程)+任务的等待队列的形式,优点是不会有堵塞,减少了对性能的消耗,缺点是不能同时进行多任务的处理,需要等待进行处理。处理效率较低。感觉可以当做一个轻量级的线程池来用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章: