我们平时在做到多线程问题的时候可能利用Handler去传递Message,其中,经常使用的就是
1、new Handler().obtainMessage().sendToTarget();
2、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/f74b91c6733b

最新文章

  1. 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
  2. Basic Tutorials of Redis(2) - String
  3. 达梦7的试用 与SQLSERVER的简单技术对比
  4. VMware Tools安装小结
  5. jQuery与Struts2综合应用[stream/json]
  6. Android 百度云媒体 等播放器播放4:3等多种比例的视频 大小配置的问题
  7. SharePoint 2013 数据库中手动更新用户信息
  8. java记录在线人数小案例
  9. public、protect、private在父类子类中使用
  10. Google, FaceBook, Amazon 加州求职记 (转)
  11. Android 自定义属性(attrs.xml,TypedArray)
  12. Javascript:由 “鸭子类型” 得出来的推论
  13. nginx笔记2-负载均衡
  14. ansible基础-理解篇
  15. 小程序开发--template模板
  16. 呕心沥血之作,最多坑mysql5.7安装教程
  17. PHP设计——单例模式与工厂模式
  18. 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)
  19. Mysql 双主架构配置从复制
  20. 纯JS实现图片预览与等比例缩放和居中

热门文章

  1. POJ2239-Selecting Courses-(匈牙利算法)
  2. maker使用说明书
  3. [PHP] 一个免费、开源的基于tp5+layui2.1.5开发的快速开发框架
  4. 以V8中js源码为例了解GitHub查看代码功能
  5. ZROI 暑期高端峰会 A班 Day2 线性代数
  6. 【Shiro学习之一】Shiro入门
  7. 注意:MagickReadImageBlob() 引发的问题
  8. centos7.2上安装CDH5.16.2及Spark2【原创】
  9. OpenCV4.1.2 QRCode解码体验测评(附源码+支持中文)
  10. PostgreSQL中的Toast Pointer