android消息機制

主要有四大類Message, Looper, MessageQueue, Handlerweb

1. 函數

一個線程有一個Looper,每一個Looper都有一個MessageQueue.oop

2.ui

MessageQueue是Message的一個容器,是個鏈表this

3. spa

Message的結構有幾個比較有意思的變量.net

Runnable callback;  線程

Handler target;get

4.it

Looper的關鍵函數就是一個循環,不停去獲取MessageQueue中的Message,執行msg.target.dispatchMessage

    /**
     * Run the message queue in this thread. Be sure to call
     * {@link #quit()} to end the loop.
     */
    public static void loop() {
     ...
        for (;;) {
            Message msg = queue.next(); // might block
            if (msg == null) {
                // No message indicates that the message queue is quitting.
                return;
            }

          ...


            msg.target.dispatchMessage(msg);

          ...


            msg.recycle();
        }
    }

    /**     * Handle system messages here.     */    public void dispatchMessage(Message msg) {        if (msg.callback != null) {            handleCallback(msg);        } else {            if (mCallback != null) {                if (mCallback.handleMessage(msg)) {                    return;                }            }            handleMessage(msg);        }    }

相關文章
相關標籤/搜索