zoukankan      html  css  js  c++  java
  • Android开发之异步消息处理机制Handler

    更加详细的介绍Handler的博文-http://blog.csdn.net/guolin_blog/article/details/9991569

    Android中的异步消息处理主要有四个部分组成,Message, Handler, MessageQueue和 Looper.

    1.Message。

    在线程之间传递的消息,可以内部携带少量的信息,用于在不同线程之间交换数据。可以使用what字段,arg1和arg2携带一些整型数据,obj字段携带一个object对象。

    2.Handler。

    Handler,处理者的意思,它主要用于发送和处理消息的。发送消息一般使用Handler的sendMessage()方法,而发出的消息经过一系列地辗转处理后, 最终会传递到Handler的HandlerMessage()方法中。  

    3.MessageQueue。

    消息队列的意思,主要用于存放所有通过Handler发送的消息,这部分消息会一直存放于消息队列中,等待被处理,每个线程中只会有一个MessageQueue对象。

    4.Looper。

    Looper是每个线程中的MesssageQueue的管家,调用Looper的loop()方法后,就会进入到一个无线循环中,然后每当发现MessageQueue中存在一条消息,就会将他去除,并传递到Handler的handlerMessage()方法。每个线程中也只会存在一个Looper对象。

    使用Handler处理异步消息的流程如下:

    1.主线程中创建一个Handler对象,并重写handlerMessage()方法。

    2.在子线程中需要进行UI更新操作时,就创建一个Message对象,并通过Handler对象的sendMessage()方法将这条消息发送出去

    3.发出去的消息被添加到了MessageQueue的队列中等待被处理。

    4.Looper则会一直尝试从MessageQueure中取出等待被处理的消息,然后分发给Handler的handlerMessage()方法。

    5.由于Handler是在主线程中创建的,此时handlerMessage()方法中的代码也会在主线程中运行,就可以更新UI操作了。

  • 相关阅读:
    spring boot 配置rabbitmq启动遇到的问题
    linux 启动rabbitmq 报错:
    spring boot 读取自定义properties文件
    jvm笔记-02-垃圾收集器与内存分配策略
    Jvm笔记-01-Java运行时数据区域与对象
    C++ 14 重载操作符与转换
    C++ 13 复制控制
    C++ 12 类
    C++ 11 泛型算法、迭代器
    android studio 问题及处理记录
  • 原文地址:https://www.cnblogs.com/liyiran/p/4638287.html
Copyright © 2011-2022 走看看