Thread,Handler,HandlerThread
Thread
在Java中常用的线程类,在Android中我们一般会创建子线程以完成耗时任务,以避免主线程阻塞(ANR
)。
使用
只需要继承Thread类,然后重写run
方法即可。
Handler
Handler体系中的核心类,用于实现处理Message的逻辑
HandlerThread
本质上是一个包含了Looper的的Thread
作用
当位于非UI线程我们需要使用Handler体系时,需要自己手动创建一个Looper,并且进行prepare
和`start,如果我们使用HandlerThread,在这其中已经帮我们完成以上操作,应该说方便了一点。
特点
HandlerThread将loop转到子线程中处理,说白了就是将分担MainLooper的工作量,降低了主线程的压力,使主界面更流畅。
开启一个线程起到多个线程的作用。处理任务是串行执行,按消息发送顺序进行处理。HandlerThread本质是一个线程,在线程内部,代码是串行处理的。
但是由于每一个任务都将以队列的方式逐个被执行到,一旦队列中有某个任务执行时间过长,那么就会导致后续的任务都会被延迟处理。
HandlerThread拥有自己的消息队列,它不会干扰或阻塞UI线程。
对于网络IO操作,HandlerThread并不适合,因为它只有一个线程,还得排队一个一个等着。