參考:http://www.2cto.com/kf/201311/255885.html
http://www.cnblogs.com/over140/archive/2011/06/24/2088637.html
类概述
定义一个包括随意类型的描写叙述数据对象,此对象能够发送给Handler。
对象包括两个额外的int字段和一个额外的对象字段。这样能够使得在非常多情况下不用做分配工作。
虽然Message的构造器是公开的。可是获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(), 这样是从一个可回收对象池中获取Message对象。
1、首先创建Handler对象:
- private Handler mHandler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- switch (msg.what) {
- case 1:
- textShowTV.setText("展示中...");
- break;
- }
- };
- };
2、然后是消息处理:
- //①。使用new Message()
- // Message mess = new Message();
- //②,使用Message.obtain()
- Message mess = Message.obtain();
- mess.what =1;
- //mHandler.obtainMessage(1)与上两行的代码一样,能够參考源代码查看
- // Message mess = mHandler.obtainMessage(1);
- mHandler.sendMessage(mess);
进入obtain方法:
进入Message方法:
然后,再次点击obtain() 方法,代码又回归到了图1
在handler.obtainMessage()的參数是这样写的:
Message android.os.Handler.obtainMessage(int what, int arg1, int arg2, Object obj)
public final Message obtainMessage (int what, int arg1, int arg2, Object obj)
Since: API Level 1
Same as obtainMessage(), except that it also sets the what, obj, arg1,and arg2 values on the returned Message.
Parameters
what
arg1
arg2
obj
而Handler中obtainMessage与new Message的差别:
obtainmessage()是从消息池中拿来一个msg 不须要另开辟空间new
new须要又一次申请,效率低,obtianmessage能够循环利用。
//because
//any
//create
//it
Message
第一种写法是message 从handler 类获取,从而能够直接向该handler 对象发送消息。另外一种写法是直接调用 handler 的发送消息方法发送消息。