android 消息处理机制

有几个概念需要认识清楚:Thread Looper Handler这几个概念实际上都是面对消息队列来完成的

Looper实际上就是维护一个MessageQueue

在Handler初始化的时候把Looper所维护的消息队列交给Handler

我们看下面的代码:

 /**
     * Use the provided queue instead of the default one.
 */
    public Handler(Looper looper) {
        mLooper = looper;
        mQueue = looper.mQueue;
        mCallback = null;
    }

这个很能说明问题

一般来说一个线程对应一个Looper也就是维护一个消息队列

然后通过Handler进行消息的发送接收,同时Handler本身实现具体的handleMessage来处理具体的事情

一般来说一个app的在创建之初会自动建立一个Looper对应的消息队列也就自动建立

线程A的Message Queue里的消息,只有线程A对象可以处理。

使用Looper.myLooper可以取得当前线程的Looper对象

handler = new EevntHandler(Looper.myLooper());

handler = new EevntHandler(Looper.getMainLooper())

第一个是构造线程的handler 第二个是构造main UI的handler

下面看一个简单的例子:

<pre>
  *  class LooperThread extends Thread {
  *      public Handler mHandler;
  *      
  *      public void run() {
  *          Looper.prepare();
  *          
  *          mHandler = new Handler() {
  *              public void handleMessage(Message msg) {
  *                  // process incoming messages here
  *              }
  *          };
  *          
  *          Looper.loop();
  *      }
  *  }</pre>









你可能感兴趣的:(thread,android,UI,null,Class)