zoukankan      html  css  js  c++  java
  • ANDROID_MARS学习笔记_S02重置版_001_HanderLooperMessageThreadThreadLocal

    一、

    *  class LooperThread extends Thread {
      *      public Handler mHandler;
      *
      *      public void run() {
      *          Looper.prepare();
      *
      *          mHandler = new Handler() {
      *              public void handleMessage(Message msg) {
      *                  // process incoming messages here
      *              }
      *          };
      *
      *          Looper.loop();
      *      }
      *  }

    上述代码的执行流程为

    1.Looper.prepare()会执行sThreadLocal.set(new Looper(quitAllowed))

    2.而new Looper(quitAllowed)会执行,

    (1)mQueue = new MessageQueue(quitAllowed);

    (2)mThread = Thread.currentThread();

    3.new Handler()会执行

    (1)mLooper = Looper.myLooper();

    (2)mQueue = mLooper.mQueue;

    4.而myLooper();会执行return sThreadLocal.get();,所以保证handler当前线程只有一个looper

    5.Looper.loop();会执行

    (1)final MessageQueue queue = me.mQueue;

    (2)for循环Message msg = queue.next();

    (3)msg.target.dispatchMessage(msg);

  • 相关阅读:
    搭建基于nginx-rtmp-module的流媒体服务器
    mysql length和char_length
    mediainfo使用
    linux下ftp服务器搭建
    排序算法
    设计模式之注册树模式
    dock
    linux下安装使用tar
    linux下安装rar
    linux 内存操作相关命令
  • 原文地址:https://www.cnblogs.com/shamgod/p/5210547.html
Copyright © 2011-2022 走看看