什么是HandleThread呢?
这个类的作用是创建一个包含looper的线程。
什么时候使用到它呢?
加入在应用程序当中为了实现同时完成多个任务,所以我们会在应用程序当中创建多个线程。为了让多个线程之间能够方便的通信,我们会使用Handler实现线程间的通信。这个时候我们手动实现的多线程+Handler的简化版就是我们HandlerThrea所要做的事了。
HandleThread的基本用法:
首先创建一个HandleThread:
HandlerThread mHandlerThread = new HandlerThread("myHandlerThreand");
mHandlerThread.start();//调用run方法
其次:
通过HandleThread的Lopper来创建Handle
final Handler mHandler = new Handler(mHandlerThread.getLooper()) { @Override public void handleMessage(Message msg) { Log.i("tag", "接收到消息:" + msg.obj.toString()); } };
然后就可以使用了:
mHandler.sendMessage(msg);
最后在不需要再用的时候记得手动收回:
protected void onDestroy() {
super.onDestroy();
mHandlerThread.quit(); //quitSafely();可以用这个
}
分析:
Paste_Image.png
可以看出HandleThread的本质其实就是一个Thread.内部自己维护了一个消息队列和一个Looper;
总结:
HandlerThread本质上是一个Thread对象,只不过其内部帮我们创建了该线程的Looper和MessageQueue;
通过HandlerThread我们不但可以实现UI线程与子线程的通信同样也可以实现子线程与子线程之间的通信;
HandlerThread在不需要使用的时候需要手动的回收掉;
网友评论