Handler sendMessage 与 obtainMessage (sendToTarget)比较

来源:互联网 发布:矩阵中r(a)是什么意思 编辑:程序博客网 时间:2024/05/20 16:03

话说在工作中第一次接触android 的Handler 的时候,不知道怎么去关注性能。

记得当时这么写的:

Message msg = new Message();msg.what = xxx;msg.arg1  = xxx;msg.arg2  = xxx;
Handle mHandler = new Handler(){
  @Override  public void handleMessage(Message msg) {
    ......
   }
}
mHandler.sendMessage(msg);

这样写也没有绝得不好,反正当时项目的功能实现了。(性能上还可以)

后来没事的时候看了看handler 的其他的方法,就看到了obtainMessage()这个方法.

复制代码
Handle mHandler = new Handler(){
  @Override  public void handleMessage(Message msg) {
    ......
   }
}
Message msg = mHandler.obtainMessage();msg.what = xxx;msg.arg1  = xxx;msg.arg2  = xxx;msg.obj    = xxx;
//mHandler.sendMessage(msg);
msg.sendToTarget();

复制代码



从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象
 
如果是这人的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销了。
0 0
原创粉丝点击