Android 8.1 应用程序的消息处理机制.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
消息处理对象 Message和Message Queue Message Message是一个Parcelable对象。 Message是线程之间传递信息的载体,包含了对消息的描述和任意的数据对象。 Message中包含了两个额外的int字段(Message.arg1和Message.arg2)和一个Object字段,并通过Message.what来标识信息,以便用不同方式处理Message。 虽然Message的构造方法是public的,但是最好是使用Message.obtain()或Handler.obtainMessage()方法来获取Message对象,因为Message的实现中包含了回收再利用的机制,可以提高效率。 2 消息处理对象 Message和Message Queue MessageQueue MessageQueue是用来容纳Message队列的,其中的Message是由Looper来分发的。 Message不能直接添加到MessageQueue中,而是要通过与Looper关联的Handler去添加。 消息队列通常附属于某一个创建它的线程,可以通过Looper.myQueue()得到当前线程的消息队列。如果没有消息队列对象则会抛出空指针异常。 Android在第一次启动程序时会默认会为UI Thread创建一个关联的消息队列,用来管理程序的一些上层组件。 可以在自己的子线程中创建Handler与UI Thread通讯。也就是说程序一启动UI线程也就是主线程就会有一个消息队列,而如果自己另外开启的一个子线程就不会有MessageQueue对象。 2 异步加载图像示例 在UI线程中定义一个Handler 在PhotoManager工具类的构造方法里定义Handler 稍后在这个Handler里重写handleMessage()方法。当这个Handler接收到由另外一个线程管理的Handler发送过来的新消息时,Android系统会自动调用这个方法,而所有线程对应的Handler都会收到相同信息。 3 异步加载图像示例 把数据从一个任务中转移到UI线程 在任务对象中存储数据 定义一个Runnable,它运行在一个编码了一个Bitmap且存储这个Bitmap到父类PhotoTask对象里的后台线程。 3 异步加载图像示例 把数据从一个任务中转移到UI线程 在后台编码 PhotoTask是下一个层次更高的对象,它包含将要展示数据的编码数据和View对象的引用。它会收到一个来自PhotoDecodeRunnable的状态码,并把这个状态码单独传递到一个包含线程池和Handler实例的对象。 3 异步加载图像示例 转移数据到UI 处理状态 PhotoManager对象收到了一个状态码和一个PhotoTask对象的handler。因为状态码是TASK_COMPLETE,所以创建一个Message应该包含状态和任务对象,然后把它发送给Handler。 3 异步加载图像示例 转移数据到UI 显示图像 Handler.handleMessage()会检查每个传入进来的Message,如果状态码是TASK_COMPLETE,这时任务就完成了,而传入的Message里的PhotoTask对象里同时包含一个Bitmap和一个ImageView。因为Handler.handle Message()运行在UI线程里,所以它能安全地转移Bitmap数据给ImageView。 3 Handler消息传递机制 * 07 * 消息处理机制 消息处理对象 目录 CONTENT 1 2 异步加载图像示例 3 参考教材:《Android应用开发项目化教程》 消息处理机制 思路 Android通过Looper、Handler来实现消息循环机制。Android的消息循环是针对线程的,每个线程都可以有自己的消息队列和消息循环。 1 消息处理机制 核心对象 Message 消息,理解为线程间通讯的数据单元。 Message Queue 消息队列,用来存放通过Handler发布的消息,按照先进先出执行。 Handler Handler是Message的主要处理者,负责将Message添加到消息队列以及对消息队列中的Message进行处理。 1 Looper 循环器,扮演Message Queue和Handler之间桥梁的角色,循环取出Message Queue里面的Message,并交付给相应的Handler进行处理。 线程 每一个线程里可含有一个Looper对象以及一个MessageQueue数据结构。在应用程序里,可以定义Handler的子类别来接收Looper所送出的消息。 消息处理机制 一般处理流程 包装Mess

文档评论(0)

弹弹 + 关注
实名认证
文档贡献者

人力资源管理师、教师资格证持证人

该用户很懒,什么也没介绍

版权声明书
用户编号:6152114224000010
领域认证该用户于2024年03月13日上传了人力资源管理师、教师资格证

1亿VIP精品文档

相关文档