• 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.

  • 相关阅读:
    Java知识体系之基础知识
    002-JavaNIO
    001-四种常见的IO模型
    c/c++面试题(6)运算符重载详解
    c/c++面试题(5)(c++重要的概念详解)
    c/c++面试题(4)字符串翻转/打印任意进制格式/类型转换
    c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现
    c/c++面试题(2)
    c/c++面试题(1)
    cocos2dx 3.0 之 lua 创建类 (二)
  • 原文地址:https://www.cnblogs.com/webglcn/p/4473466.html
Copyright © 2020-2023  润新知