使用handler.obtainMessage() 时要注意的问题

12 篇文章 0 订阅

handler.obtainMessage() 的作用是从当前的Handler中获取指定的Message以供再次使用

尤其是在监测线程中 如果不断的new Message() 可能出现错误 (错误信息已经忘了 没有记录 =.=)

有5个重载的方法

public final Message obtainMessage () 
public final Message obtainMessage (int what)
public final Message obtainMessage (int what, Object obj)
public final Message obtainMessage (int what, int arg1, int arg2)
public final Message obtainMessage (int what, int arg1, int arg2, Object obj)

what  arg1 arg2 obj分别对应Message中的相应成员变量

并且这样获得的Message不用再重新定义相应的值  十分好用 

一般来讲 what是用来switch不同的操作 而其他3个参数都是定义属性


要注意的是 具有两个参数的方法只有一个 且第二个参数是Object 而不是arg1

并且如果在2个参数的方法中 将第二个参数填写为本应该设置为arg1的值(int)时候 也不会报错 因为:

1. arg1有缺省值0

2. int型可以被自动转化为Integer

但是arg1的值却被赋给了msg,obj 所以在Handler中的arg1值就为0了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值