• 转:Android中的Handler的机制与用法详解


    注:Message类的用法:

    message的几个参数都可以携带数据,其中arg1与arg2可以携带int类型,what是用户自定义的int型,这样接受者可以了解这个消息的信息.

    说明:使用Message类的属性可以携带int类型的数据,如果要携带其他类型的数据,可以先将携带的数据保存到bundle对象中,然后通过Message类的setdata方法

    将其添加到Message中.

    要注意以下三点:

    1.尽管Message有public的默认构造方法,但是通常情况下,需要使用Message.obtain方法或handler.obtainmessage方法来从消息池中获得空消息对象,以节省资源.

    2.如果一个Message只需携带简单的int型信息,应该有限使用Message.arg1和arg2,这比bundle更省内存.

    3.尽可能使用Message.what来表示信息,以便用不同方式处理Message

    概述:  

         很多android初学者对android 中的handler不是很明白,其实Google参考了Windows的消息处理机制,

    在Android系统中实现了一套类似的消息处理机制。在下面介绍handler机制前,首先得了解以下几个概念:

        1. Message

         消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给UI线程。

        2. Message Queue

         消息队列,用来存放通过Handler发布的消息,按照先进先出执行。

        3. Handler

         Handler是Message的主要处理者,负责将Message添加到消息队列以及对消息队列中的Message进行处理。

        4. Looper

         循环器,扮演Message Queue和Handler之间桥梁的角色,循环取出Message Queue里面的Message,并交付给相应的Handler进行处理。

        5. 线程

         UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。

    每一个线程里可含有一个Looper对象以及一个MessageQueue数据结构。在你的应用程序里,可以定义Handler的子类别来接收Looper所送出的消息。

    好了,下面是正文~

  • 相关阅读:
    最短路打印路径
    hdu1874(dijskstra算法和floyd算法)
    最短路径(Dijkstra算法)
    kruskal算法模板(续)
    kruskal算法模板
    最小生成树prim算法
    hdu1879(并查集)
    hdu1875 并查集
    top 1 1
    mvc 母版页中登录注册和问候的处理
  • 原文地址:https://www.cnblogs.com/imqsl/p/6702582.html
Copyright © 2020-2023  润新知