Android HandlerThread详解

作者: 千涯秋瑟 | 来源:发表于2017-12-04 22:29 被阅读0次

一、handlerThread是什么

1、handlerThread产生背景

handlerThread就是handler+thread+looper的框架,他是一个thread,内部实现了一个looper消息循环。

因为HandlerThread拥有自己的消息队列,它不会干扰或阻塞UI线程,比较合适处理那些需要花费时间偏长的任务。我们只需要把任务发送给HandlerThread,然后就只需要等待任务执行结束的时候通知返回到主线程就好了。

2、handlerThread 的特点

(1)HandlerThread将loop转到子线程中处理,目的就是分担MainLooper的工作量,降低了主线程的压力,使主界面更流畅。

(2)开启一个线程起到多个线程的作用。处理任务是串行执行,按消息发送顺序进行处理。HandlerThread本质是一个线程,在线程内部,代码是串行处理的。

(3)但是由于每一个任务都将以队列的方式逐个被执行到,一旦队列中有某个任务执行时间过长,那么就会导致后续的任务都会被延迟处理。

(4)HandlerThread拥有自己的消息队列,它不会干扰或阻塞UI线程。

(5)对于网络IO操作,HandlerThread并不适合,因为它只有一个线程,还得排队一个一个等着。

android系统提供的Handler类内部的Looper默认绑定的是UI线程的消息队列,对于非UI线程又想使用消息机制,只能自定义一个线程,在线程run()方法中,通过 Looper.prepare();Looper.loop();来开启Looper和消息队列,其实就是Google攻城狮给我实现好的HandlerThread,HandlerThread绑定的是它自己的消息队列,它不会干扰或阻塞UI线程。

handlerThread使用的是当前线程的Looper。

二、handlerThread源码解析

handlerThread 有自己的消息循环,所以不会占用UI线程的消息循环和队列。

参考资料:

handlerThread源码解析

handlerThread用法

相关文章

网友评论

    本文标题:Android HandlerThread详解

    本文链接:https://www.haomeiwen.com/subject/zzvxixtx.html