Looper、Handler、Message

2016-01-21  本文已影响59人  hello_cc

Looper

  • 用于在线程上运行消息循环的循环者

下面就是将一个普通线程变成循环线程。即循环工作的线程,mHandler发来消息,就处理。

private class LooperThread extends Thread {
    public Handler mHandler;

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

        mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.d("LooperThread", "handleMessage " + msg.toString());
            }
        };

        Looper.loop();
    }
}

查看源码可知,Looper有自己的MessageQueue,调用loop()后,会执行for循环,从消息队列中取出消息执行。

一个线程只能有一个Looper对象,即ThreadLocal。

Handler

  • Handler用于发送和处理Message,并且与线程的消息队列关联。

Handler两大使用场景

  1. 调度消息在未来的某个时间执行。
  2. 执行一个动作在不同的线程。

Message

  • 用于Handler发送数据的载体。
上一篇 下一篇

猜你喜欢

热点阅读