美文网首页
Handler机制学习

Handler机制学习

作者: idioitcbear | 来源:发表于2017-06-11 15:16 被阅读11次

主要以下对象:
Message : 消息对象
MessageQueue : 消息队列,存放待处理消息
Handler : 发送消息
Looper : 轮询队列中的信息

  1. Looper.prepare() : 在创建Activity的时候会被执行,创建Looper对象并绑定到ThreadLocal上以及调用prepare方法执行下面两个操作
  2. 初始化MessageQueue
  3. 绑定当前进程
  4. 创建Handler,在Handler的构造函数中,会通过Looper.myLooper();获取当前Activity已经初始化的Looper对象,即可以拿到对应MessageQueue。
  5. Handler拿到messageQueue,就可以sendMessage进去
  6. Looper.loop()可以循环读取MessageQueue中的消息,利用msg.target.dispatchMessage(msg)分发消息

调用图,加深理解:

Paste_Image.png

注:ThreadLocal:本地线程能用map集合,在其他线程不能获取这个值。例子:

public class Main {
  public static void main(String[] args) {
      ThreadLocal<String> localMap = new ThreadLocal<>();
      localMap.set("我是被設置在ThreadLocal中的變量");
      show(localMap);
      new Thread() {
          public void run() {
              show(localMap);
          };
      }.start();
  }

  private static void show(ThreadLocal<String> localMap) {
      String string = localMap.get();
      System.out.println("獲取到的值為:" + string);
  }
}

结果:

獲取到的值為:我是被設置在ThreadLocal中的變量
獲取到的值為:null

相关文章

  • Handler消息机制(Handler、Looper、Messa

    一、为什么要学习Handler消息机制: 感觉Android App都是通过Handler消息机制驱动起来的, 比...

  • 深入理解Handler机制之引路篇

    要想深入理解Handler机制,就要理解: Android为何要引入Handler机制? Handler机制究竟是...

  • Handler机制小结

    Handler笔记 什么是handler机制?handler机制的主要成员1、handler:负责发送处理消息2、...

  • Handler机制学习

    主要以下对象:Message : 消息对象MessageQueue : 消息队列,存放待处理消息Handler :...

  • Android:Handler 机制和原理?

    一、Handler机制概述 Handler机制也可以说是消息机制,Handler的运行时需要MessageQueu...

  • Android消息机制

    Handler Android消息机制主要指的是Handler运行机制,Handler底层需要MessageQue...

  • Android 的消息机制

    Android 消息机制主要是指 Handler 的运行机制。 **Handler **Handler 的运行需要...

  • Android Handler机制详解

    Android Handler机制1--ThreadLocalAndroid Handler机制2--Looper...

  • 消息机制

    消息机制Handler的工作原理 Android中的消息机制主要就是指Handler的运行机制,而Handler的...

  • Handler机制整理

    Handler机制整理目录介绍1.关于handler消息机制图2.关于handler基本介绍3.使用handler...

网友评论

      本文标题:Handler机制学习

      本文链接:https://www.haomeiwen.com/subject/rdyhqxtx.html