handler类: message类: 通过查看handler类和message类可得:Message.obtain()或者Handler.obtainMessage(),本质一样。
结论:获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(), 这样是从一个可回收对象池中获取Message对象。
进入obtain方法:图一
进入Message方法:图二
查看obtainMessage()源码:图三
查看Message.obtain(this, what) 源码:图四
然后,再次点击obtain() 方法,代码又回归到了图1
总结:
上面的图1中obtain方法的注释中说得很明白:从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象
如果是这样的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销了。
参考:
Android Message.obtain() 和Handler.obtainMessage()的区别
