Android中的Handler机制

前言:

android中的app是由java编写的,因此android中很多机制也就是java中的机制,而今天我们要讲的handler机制是一种android中实现的特有机制。

简单的说,handler是一个线程池(更多关于java中线程池的知识,请参考我的博文:Java中的线程机制)。

正文:

一、首先我们来讲一个概念:Message(消息)

所谓消息,就是handler机制中通信的介质。当我们需要发送一个消息时,就需要有一个Message对象,而这个对象我们不需要自己创建,只要调用Handler类提供的obtainMessage方法,就能得到一个消息,我们可以设置这个消息的属性,让其携带我们指定的信息,最后通过调用sendtotarget方法即可发送出去。

那么,为什么我们不自己创建一个Message对象呢,我们自己new的消息和通过obtainMessage获得的消息有什么区别呢?

简单的解析一下:每一个Message对象都有一个target,即这个消息是用于发送到哪里的,也就是目标handler。如果new一个Message对象,就必须使用handler.sendmessage(msg)方法把消息发送到的相应的handler;而obtain方式会自动将Message对象的target设置为当前handler,因此直接sendtotarget即可。另外,handler中有一个消息池,所有用过的Message对象并没有立即回收,而是放在这个消息池中,使用obtain方式会从池中取出一个来用,避免重复的申请释放内存操作,性能更高校一些。因此我们一般都会采用obtain方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值