obtainmessage()是从消息池中拿来一个msg 不需要另开辟空间new
new需要重新申请,效率低,obtianmessage可以循环利用;
//use Handler.obtainMessage(),instead of msg = new Message(); //because if there is already an Message object,that not be used by //any one ,the system will hand use that object,so you don't have to //create and object and allocate memory. //it is also another example of object recycling and reusing in android. Message msg = mHandler.obtainMessage(); msg.what = UPDATE_LISTVIEW; msg.obj = current + "/" + total + "songs"; //this method is called from worker Thread,so we cannot update UI from here. msg.sendToTarget();
在看下面代码:
Message msg = handler.obtainMessage(); msg.arg1 = i; msg.sendToTarget();
Message msg=new Message(); msg.arg1=i; handler.sendMessage(msg);
第一种写法是message 从handler 类获取,从而可以直接向该handler 对象发送消息,第二种写法是直接调用 handler 的发送消息方法发送消息