參考: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 的發送消息方法發送消息。