handler简介
handler是android中异步消息处理机制 ,handler里有一个looper对象用来去轮询handler的任务, 通过其构造方法可以去指定 new Handler(looper对象) looper在什么线程里创建的其handmessage方法就会到什么线程去执行, 主线程不用系统会默认去创建looper , 非主线程需要去手动创建
一般是用于在子线程里去 发送消息给主线程去更新 ui
handlerThread简介
这个类是一般是用于 主线程去通过子线程去干一些耗时的操作 其父类是Thread类
基本用法
将实例化后的handlerThread类的looper对象传给 一个新的handler对象,然后这个新的handdler对象的handemessage方法就执行在子线程了
注意: getLooper方法里返回的looper对象是在子线程里去实例化的 所以在new Handler()构造里传值的时候可能会为空,所以其getLooper方法里做了一个同步的操作
getLooper里作的操作
1.先判断这个线程是否还活着
2.如果run方法还没有被执行时 就睡眠线程在此处
run方法主要干的一些事
1.给mLooper成员变量赋值
2.赋值成功后 唤醒线程 成功返回mLooper对象