handler.obtainMessage()理解


在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  Value to assign to the returned Message.what field.
arg1  Value to assign to the returned Message.arg1 field.
arg2  Value to assign to the returned Message.arg2 field.
obj  Value to assign to the returned Message.obj field.

而Handler中obtainMessage與new Message的區別:

obtainmessage()是從消息池中拿來一個msg 不需要另開辟空間new

new需要重新申請,效率低,obtianmessage可以循環利用;

 

  1. //use Handler.obtainMessage(),instead of msg = new Message();   
  2. //because if there is already an Message object,that not be used by    
  3. //any one ,the system will hand use that object,so you don't have to    
  4. //create and object and allocate memory.   
  5. //it  is also another example of object recycling and reusing in android.   
  6.     Message msg = mHandler.obtainMessage();  
  7.     msg.what = UPDATE_LISTVIEW;  
  8.     msg.obj = current + "/" + total + "songs";  
  9.     //this method is called from worker Thread,so we cannot update UI from here.   
  10.     msg.sendToTarget();  
在看下面代碼:
  1. Message msg = handler.obtainMessage();  
  2.                         msg.arg1 = i;  
  3.                         msg.sendToTarget();   
  4.   
  5.   
  6. Message msg=new Message();  
  7.     msg.arg1=i;  
  8.     handler.sendMessage(msg);  
第一種寫法是message 從handler 類獲取,從而可以直接向該handler 對象發送消息,第二種寫法是直接調用 handler 的發送消息方法發送消息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM