Thread、Handler、HandlerThread的区别
参考:http://waylenw.github.io/Android/android-handler-thread-usage/
Thread:
普通的异步线程。
Handler:
异步更新UI的,更详细的说是用来做线程间的通信的,更新UI时是子线程与UI主线程之间的通信。
Thread和Handler都比较熟,就不看了。
HandlerThread:
子线程与子线程之间的通信。
HandlerThread源码:
它的内部创建一个带有looper的线程,looper对象可以用于创建Handler类来进行调度。
HandlerThread使用:
1、创建HandlerThread并且start
2、创建handler并为hander设置handler(因为只有主线程里面的hander有默认的looper,新建的handler都需要自己创建looper)
3、创建一个子线程并发送消息
4、释放资源
实际使用:
这里模拟一个异步下载图片的例子:
通过点击download去下载图片并加载。
在这里handler运行在线程中,同时在该线程中,通过handler+message去有序地运行其他的线程。
优缺点
HandlerThread适合在只需要在一个工作线程(非UI线程)+任务的等待队列的形式,优点是不会有堵塞,减少了对性能的消耗,缺点是不能同时进行多任务的处理,需要等待进行处理。处理效率较低。感觉可以当做一个轻量级的线程池来用。