sendMessage 与 obtainMessage (sendToTarget)比较

咱们平时在作到多线程问题的时候可能利用Handler去传递Message,其中,常用的就是
一、new Handler().obtainMessage().sendToTarget();
二、new Handler().sendMessage(new Message());
第一种是直接传递what,obj等,msg的一些数据,第二种是初始化一个msg,而后赋值msg的一些数据,以Message的对象去send,在使用上这两种均可以实现需求,那么这两种有什么区别呢?

等同于obtain()方法,返回了一个带target标志的Message,就是给Message打上Handler的标志,好区分的意思,没别的意思,主要就是obtain()方法,以下多线程


 
image.png

就如同最开始说的那样从MessagePool 返回一个新的Message实例,避免分配新对象,省去了建立对象申请内存的开销。。。。。
 
image.png

获得了Message后,调用了sendToTarget(),,里面调用了sendMessage(),这就是和方法二同样的了, new Handler().sendMessage(new Message());
总结下就是说利用obtainMessage().sendToTarget()是从MessagePool 返回一个新的Message实例能够避免咱们去建立Message对象申请内存开销。线程

 

https://www.jianshu.com/p/f74b91c6733borm

相关文章
相关标签/搜索