zoukankan      html  css  js  c++  java
  • Looper Handler 多线程

    Looper is created by default on main UI
        Property:
            // main ui thread, if Looper is initialized in another thread, it would be a new thread
            // class xx extends Thread. => here is a new thread.
            mThread
            mMessageQueue // empty
        loop()
            for(;;) {
                message = mMessageQueue.next()
                message.target.dispatchMessage(message);
            }

    Handler
        Property:
            mLooper = Looper.myLooper();
            mQueue = mLooper.mQueue;
            mCallback = callback;
        
        sendMessage
            mQueue.enqueueMessage(msg, uptimeMillis);
        
        interface Callback {
            public boolean handleMessage(Message msg);
        }
        
        dispatchMessage(Message msg) { // ingore Message's properties
            if (mCallback != null) {
                if (mCallback.handleMessage(msg)) {
                    return;
                }
            }
            handleMessage(msg);
        }

    handler make connection with Looper by adding looper object into handler.    
    handler from thread A sends message to looper.MQ
    MQ is looped in thread B.
    Looper processed MQ messages by sequence from different threads.

  • 相关阅读:
    构建之法阅读笔记04
    构建之法阅读笔记03
    第十二周学习进度情况
    课堂练习-找水王
    第十一周学习进度情况
    第十周学习进度情况
    课后作业:寻找水王
    《人月神话》阅读笔记01
    学习进度条
    学习进度条
  • 原文地址:https://www.cnblogs.com/webglcn/p/4473466.html
Copyright © 2011-2022 走看看