sendMessage 与 obtainMessage (sendToTarget)比较
2024-09-04 05:36:51
我们平时在做到多线程问题的时候可能利用Handler去传递Message,其中,经常使用的就是
1、new Handler().obtainMessage().sendToTarget();
2、new Handler().sendMessage(new Message());
第一种是直接传递what,obj等,msg的一些数据,第二种是初始化一个msg,然后赋值msg的一些数据,以Message的对象去send,在使用上这两种都可以实现需求,那么这两种有什么区别呢?
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对象申请内存开销。
最新文章
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- Basic Tutorials of Redis(2) - String
- 达梦7的试用 与SQLSERVER的简单技术对比
- VMware Tools安装小结
- jQuery与Struts2综合应用[stream/json]
- Android 百度云媒体 等播放器播放4:3等多种比例的视频 大小配置的问题
- SharePoint 2013 数据库中手动更新用户信息
- java记录在线人数小案例
- public、protect、private在父类子类中使用
- Google, FaceBook, Amazon 加州求职记 (转)
- Android 自定义属性(attrs.xml,TypedArray)
- Javascript:由 “鸭子类型” 得出来的推论
- nginx笔记2-负载均衡
- ansible基础-理解篇
- 小程序开发--template模板
- 呕心沥血之作,最多坑mysql5.7安装教程
- PHP设计——单例模式与工厂模式
- 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)
- Mysql 双主架构配置从复制
- 纯JS实现图片预览与等比例缩放和居中
热门文章
- POJ2239-Selecting Courses-(匈牙利算法)
- maker使用说明书
- [PHP] 一个免费、开源的基于tp5+layui2.1.5开发的快速开发框架
- 以V8中js源码为例了解GitHub查看代码功能
- ZROI 暑期高端峰会 A班 Day2 线性代数
- 【Shiro学习之一】Shiro入门
- 注意:MagickReadImageBlob() 引发的问题
- centos7.2上安装CDH5.16.2及Spark2【原创】
- OpenCV4.1.2 QRCode解码体验测评(附源码+支持中文)
- PostgreSQL中的Toast Pointer