android这样创建Message可以减少内存开销

2016-08-10  本文已影响0人  0dce86ba3565

我们一般创建message是这么创建的

Message msg = new Message();


但是这样创建message可以减少内存开销

Message msg = handler.obtainMessage();


为什么会这样呢?我们来看看源码,关键源码如下:

//普通的实例化方法

public Message(){}


//obtainMessages实例化方法

public final Message obtainMessage(){

      return Message.obtain(this);

}

public static Message obtain(Handler h){

Message m=obtain();

m.target=h;

return m;

}


public static Message obtain(){

synchronized(sPoolSync){

Message m=sPool;

sPool=m.next;

m.next=null;

sPoolSize--;

return m;

}

return new Message();

}


总结:

上面源码中说得很明白:从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象

如果是这人的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销了。

上一篇下一篇

猜你喜欢

热点阅读