Handler发送机制

本文介绍了Android中Handler的使用,包括发送空消息、发送带有数据的消息,以及Message的arg1、arg2、obj和what属性。重点讲解了Handler、Message、Looper和MessageQueue的角色,强调了使用Message.obtain()获取Message以节约资源。此外,还探讨了主线程和工作线程的交互,以及如何通过Handler在工作线程中更新UI,提供了网络下载图片并显示进度的示例代码。
摘要由CSDN通过智能技术生成

Handler简单使用:

1. Handler:消息处理者

handleMessage(Message):在主线程中,构造Handler对象时,重写此方法 

sendEmptyMessage(int what):用在子线程中,发送空消息

sendMessage(Message):用在工作线程中,立即发送消息

2. Message:消息

arg1:用来存放整型数据

arg2:用来存放整型数据

obj:用来存放Object数据

what:用于指定用户自定义的消息代码,便于主线程接收后,根据消息代码不同而执行不同的操作

setData(Bundle ) 传送更多的业务数据


使用Message需要注意4点:


1)、Message虽然也可以通过new来获取,但是通常使用Message.obtain()或Handler.obtainMessage()方法来从消息池中获得空消息对象,以节省资源;
2)、如果一个Message只需要携带简单的int型数据,应优先使用arg1和arg2属性来传递数据,这样比其他方式节省内存;
3)、尽可能使用Message.what来标识信息,以便用不同的方式处理Message。
4)、如果需要从工作线程返回很多数据信息,可以借助Bundle对象将这些数据集中到一起,然后存放到obj属性中,再返回到主线程。

3. Thread:将消息发送给主线程


Handler运行原理:

Looper:消息泵,不断地从MessageQueue中抽取Message执行。一个MessageQueue需要一个Looper

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值