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.

  • 相关阅读:
    LIN总线学习-总线逻辑
    使用万用表测量CAN总线电压及实际电压与逻辑电瓶关系
    汽车网络和控制单元的安全威胁研究
    [CANopen] SDO的命令字
    新起点,新开始
    Git Commands
    Obsessive String
    The E-pang Palace
    最长递增子序列(LIS)
    Valid Sets
  • 原文地址:https://www.cnblogs.com/webglcn/p/4473466.html
Copyright © 2011-2022 走看看