Android App在线程中创建handler的方法讲解

2019-12-10 18:37:43于海丽

创建HandlerThread时要把它启动了,即调用start()方法。

接着就是handler的使用,如下:

mHandler = new Handler(thread.getLooper());
//TODO:you can post or send something....

创建Handler时将HandlerThread中的looper对象传入。那么这个mHandler对象就是与HandlerThread这个线程绑定了(这时就不再是与UI线程绑定了,这样它处理耗时操作将不会阻塞UI)。

 

线程中消息处理的流程图

Android,handler

消息插入队列的位置由参数uptimeMillis来确定。

Handler与线程的关系

Android,handler

1.HandlerThread就是一个封装了Looper的Thread.
2.Handler会与实例化时所在的线程绑定.

UI线程与子线程通信相关

Android,handler

1.需要更新UI,则需要使用与主线程绑定的Handler发送消息,若使用在子线程中创建的Handler则会抛出异常;
2.子线程中实例化Handler对象首先需要调用Looper.prepare(),否则会抛出异常;
3.调用Looper.loop()方法消息循环才会启动;
使用Handler时一些需要注意的地方
Looper.prepare(),主线程使用handler,系统默认prepare了,子线程中创建handler必须在前面Looper.prepare(),后面加上Looper.loop();