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操作了。

  • 相关阅读:
    进程的实践与练习2
    士兵队列训练问题
    大数相加
    Ignatius and the Princess II
    Parentheses Balance (括号平衡)---栈
    简单计算器
    C++全排列函数next_permutation()和prev_permutation()
    黑白图像
    9*9乘法表
    输入5 个数按从小到大的顺序输出
  • 原文地址:https://www.cnblogs.com/liyiran/p/4638287.html
Copyright © 2011-2022 走看看