Android Handler分析(一) Handler和Message详解

《Android Handler机制》

《Android Handler分析(一) Handler和Message详解》

《Android Handler分析 (二) MessageQueue详解》

《Android Handler分析 (三) Looper详解和Handler其他知识》

《Android 中的 HandlerThread 类详解》

 

《Android Handler机制》中我们对Handler机制的整体流程做了分析,知道了在Android中是怎样通过Handler进行线程切换的了。接下来,我们就看看Handler中的相关类分析。

Message源码分析:

前面说到了Message表示一个消息,可以理解为线程间通讯的数据单元,可以用来传递一些数据。

1. 首先看一下Message类中的一些成员变量
public int what:可以用来区分不同的消息,然后在Handler中做不同的处理
public int arg1,arg2:可以传递数据,当需要传递的数据仅仅是int类型时,可以用arg1和arg2,而不需要使用复杂的obj和data
public Object obj:可以传递数据,可以传递任意的Object对象
Bundle data:可以Bundle类型传递数据,但是使用了默认修饰符,不能直接使用Message对象.data的形式设置和获取值,但Message提供了对应的get和set方法用来设置和获取值
Handler target:保存发送消息的Handler对象,可以在创建Message时指定,在后面会有用到target这个参数,所以特别说明
Runnable callback:Runable对象,可以在创建Message时指定,另外在Handler使用post形式发送消息时的callback参数最终也是保存在 Message的这个参数中
Message next:Message对象,用来使Message组成链表的形式
private static Message sPool:用于保存回收的Message消息对象
private static boolean gCheckRecycle = true:判断Android版本是否大于Android5.0(Build.VERSION_CODES.LOLLIPOP),小于为false

2. 创建(获取)一个Message对象(以下方法都是使用Public修饰的)

Message(){} // 空参数构造方法,直接new Message()创建对象
static Message obtain() // 使用静态的obtain()方法获取,内部会重复使用回收的Message对象,比较常用static Message obtain(Message orig) // 根据传递的Message对象复制一个新的Message对象
static Message obtain(Handler h) // 给Message指定Handler,会将 h 赋值给 成员变量 target
static Message obtain(Handler h, Runnable callback) // 给Message指定Handler和Runable,会将 h 赋值给 成员变量 target,callback赋值给Message的成员变量 callbac
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值