android中很多地方都能看到消息处理的代码,其实现主要借助looper和handler来完成。
在类looper的注释中,有最基础的消息处理使用方法:

  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();
        }
looper

looper中有个消息队列mQueue,保存了待处理的消息

    // sThreadLocal.get() will return null unless you've called prepare().
    static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>();
    private static Looper sMainLooper;  // guarded by Looper.class

    //消息队列,用来保存消息
    final MessageQueue mQueue;
    //保存looper调用线程的信息
    final Thread mThread;
Handler

Handler主要就是向looper的消息队列中添加消息和处理消息的,Handler有好几个构造函数,可以传入Looper looper, Callback callback等,即Handler可以处理其他线程的looper,而且还可以输入特定的消息处理callback函数。
而Handler对消息的处理,是由下面函数完成:

   public void dispatchMessage(Message msg) {
        if (msg.callback != null) {
            handleCallback(msg);
        } else {
            if (mCallback != null) {
                if (mCallback.handleMessage(msg)) {
                    return;
                }
            }
            handleMessage(msg);
        }
    }

如果msg有callback函数,调用该函数处理消息;
如果调用Handler带callback的构造函数,则利用该callback函数处理消息;
如果上面两个都没有,则会调用handleMessage()处理消息,这也就是在最开始时候类looper中提供的简单例子所实现的一样,子类继承Handler类,并重写handleMessage()方法进行特定需要的消息处理。