【Android】Handler中sendMessage和sendToTarget的区别

本文解析了Android中sendMessage()与sendToTarget()的区别及使用方法。sendMessage()为Handler的方法,通常通过重写handleMessage()实现消息处理;而sendToTarget()为Message的方法,通过Message的target属性指向特定的Handler,实现消息传递。
摘要由CSDN通过智能技术生成

     首先,sendMessage()是Handle的方法,sendToTarget()是Message的方法。

       之前讲过,Message的接收一般都是在主线程中new一个Handle变量,重写里面的handleMessage(),在里面写上具体的实现代码,然后在需要发送Message的地方,用new的那个Handle变量的.sendMessage(Message msg)即可,这是常规的做法,下面介绍另一种。

       你可能会疑惑,Handle变量用sendMessage()把Message发送出去,再走它内部写好的handleMessage()处理,这很好理解啊,但是sendToTarget()怎么用,它是Message用的方法,发送出去系统怎么知道被哪个Handle接收?接收到后的具体实现代码又写在哪里?其实没有那么玄乎,查看源码会发现,Message类里面,是有一个Handle变量成员的,名称是target,当你调用sendToTarget(),在Message类里会走target.sendMessage(this),也就是说到底这还是用Handle的方法,那么这个target怎么设置?首先,还是在主线程new一个Handle变量handle,重写里面的handleMessage(),然后,当你需要new一个Message的时候,请使用:

       Message msg=handle.obtainMessage(int what);

       使用这个方法来创建Message,这个Message的target就设置好了,然后就可以放心地使用sendToTarget了~总的来讲这两个方法其实没太大本质差别,但是用sendToTarget()写起来要更规范些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值