Android HandlerThread、Looper、Handler类关系分析
对应的类图及各类的职责如下:
HandlerThread的惯常用法:
ThreadHandler的looper是在执行run时赋值的,上述代码为何可保证new Handler时getLooper不是null呢,看下HandlerThread.getLooper实现:
在run给mLooper赋值后,便会做notifyAll操作
其中prepare负责创建当前线程的looper实例,并以TLS形式保存(空间换时间的策略), Looper.loop便以while(true)的方式启动消息接收流程,执行quit操作时,会导致queue.next()返回null,loop break,线程的生命周期终结。