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.

  • 相关阅读:
    十一:jinja2模板传参
    Python基础—流程控制
    Python字符串格式化输出
    Python基本数据类型--列表、元组、字典、集合
    Python基本数据类型之字符串、数字、布尔
    Python用户输入和代码注释
    Python中变量和常量的理解
    Python程序的执行方式
    Python初识
    python初识
  • 原文地址:https://www.cnblogs.com/webglcn/p/4473466.html
Copyright © 2011-2022 走看看