美文网首页
 Android HandlerThread总结

 Android HandlerThread总结

作者: 官先生Y | 来源:发表于2017-03-19 13:03 被阅读125次

Android消息处理机制(Handler)

HandlerThread简介

Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.

从官方对HandlerThread的解释我们可以知道:

  1. 一个方便的类,用于启动一个新线程并且它关联上了Looper。
  2. 工作线程所关联的Looper常常被用于创建Hander。

为什么会有HandlerThread?

在开发中可能有这样的需求,某个线程需要按顺序执行接收到的任务,比如说最常见的就是在UI线程中处理刷新界面的任务。
要注意的是,UI线程创建Looper和开启消息循环这个逻辑Android系统已经为我们搞定了。我们只需要在UI线程创建Handler并通过它发送消息,就可以实现上面所讲的需求。

如果要实现上面的需求就需要自己写以下代码:

public class HandlerThreadDemo1 extends Thread {

    @Override
    public void run() {
        Looper.prepare();

        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.e("HandlerThreadDemo1", "threadName--" + Thread.currentThread().getName() + "  messageWhat-" + msg.what);
            }
        };

        SystemClock.sleep(3000);

        handler.sendEmptyMessage(88);

        Looper.loop();
    }
}

官方为了方便使用此功能就提供了HandlerThread。

注意:写在Looper.loop()之后的代码不会被执行,因为loop方法中有无限循环的逻辑。可以通过Looper中quit和quitSafely方法终止死循环。

HandlerThread应用场景

  • AsyncQueryHandler中使用HandlerThread
  • 每隔一定的时间向服务器获取最新数据

另外

不错地对HandlerThread讲解:
Android HandlerThread 完全解析

相关文章

网友评论

      本文标题: Android HandlerThread总结

      本文链接:https://www.haomeiwen.com/subject/unkmnttx.html