类概述
 
定义一个包含任意类型的描述数据对象,此对象可以发送给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、然后是消息处理:
-             
-             
-             Message mess = Message.obtain();  
-             mess.what =1;  
-             
-             mHandler.sendMessage(mess);  
 
 
 
通过比较我们会发现,这两种获取Message的实例的方法不一样,于是我看了源码,果然不一样:
 
进入obtain方法:
 
图1:
 
进入Message方法:
 
图2:
 
 
查看obtainMessage()源码:
 
图3:
   
 
查看Message.obtain(this, what) 源码:
图4:
 
 
然后,再次点击obtain() 方法,代码又回归到了图1
 
总结:
 
上面的图1中obtain方法的注释中说得很明白:从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象
 
如果是这样的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销了。