zoukankan      html  css  js  c++  java
  • 转: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所送出的消息。

    好了,下面是正文~

  • 相关阅读:
    【Docker】(6)---Dockerfile文件
    【Docker】(5)---springCloud注册中心打包Docker镜像
    【Docker】(4)搭建私有镜像仓库
    【Docker】(3)---linux部署Docker及Docker常用命令
    【Docker】(2)---仓库、镜像、容器
    【Docker】(1)---Docker入门篇
    【Maven】---Nexus私服配置Setting和Pom
    【Maven】---Linux搭建Nexus3.X私服
    【Maven】---坐标与依赖
    go语言path包和filepath包的学习与使用
  • 原文地址:https://www.cnblogs.com/imqsl/p/6702582.html
Copyright © 2011-2022 走看看