我们平时在做到多线程问题的时候可能利用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

转载于:https://www.cnblogs.com/bluestorm/p/10916715.html

sendMessage 与 obtainMessage (sendToTarget)比较相关推荐

  1. Handler sendMessage 与 obtainMessage (sendToTarget)比较

    转自:http://iaiai.iteye.com/blog/1992196 obtainmessage()是从消息池中拿来一个msg 不需要另开辟空间new new需要重新申请,效率低,obtian ...

  2. 无知记事本(android版)

    这是我这段时间内学习android搜查到的知识,多谢各位大神写出来了这些宝贵的东西,让我这个愣头青可以学习,这些是我搜查问题时找到同类型解答中最符合实际的,我只是留了链接,如果有人想查看,直接点击链接 ...

  3. android 多用户管理UserManager

    一.概述 Android从4.2开始支持多用户模式,不同的用户运行在不同的用户空间,相关的系统设置是各不相同而且不同用户安装的应用和应用数据也是不一样的,但是系统中和硬件相关的设计则是共用的. And ...

  4. Android10.0 开机广播BOOT_COMPLETED发送流程分析

    原文地址:https://skytoby.github.io/2019/%E5%BC%80%E6%9C%BA%E5%B9%BF%E6%92%ADBOOT_COMPLETED%E5%8F%91%E9%8 ...

  5. 刨根问底——Handler

    提起Handler,很多人首先想到的就是子线程执行耗时操作,主线程更新UI.那么这种机制内部是怎么实现的呢?为什么我们只需要在UI线程声明初始化一个Handler,然后在子线程发送一个消息,最后就能根 ...

  6. Android存储系统之架构篇

    一.概述 本文讲述Android存储系统的架构与设计,涉及到最为核心的便是MountService和Vold这两个模块以及之间的交互.上一篇文章Android存储系统之源码篇从源码角度介绍相关模块的创 ...

  7. android服务下载,android服务之bindService和unService中下载任务中的应用

    通过bindService方法来调用服务final Down down = data; viewHolder.videoActionBtn.setOnClickListener(new View.On ...

  8. Android 系统(132)---ODM 开发用户常见需求文档(六)

    ODM 开发用户常见需求文档(六) 一:锁卡界面显示哪张SIM卡 (frameworks/base/packages/Keyguard/src/com/mediatek/keyguard/Teleph ...

  9. Android 蓝牙开发(五)OPP接收文件

    原址 1 创建rfcomm层sever 要想通过蓝牙接收文件,首先要打开蓝牙.所以先从打开蓝牙进行分析.  BluetoothOppReceiver在AndroidManifest.xml文件中进行了 ...

最新文章

  1. UITableView 学习笔记
  2. [2017.3.23]Miller-Rabin
  3. MapReduce-Reduce端join操作-Map阶段代码
  4. HDU - 5572 An Easy Physics Problem(几何-碰撞问题)
  5. new+date+xxx+java_SpringMVC+MyBatis - 12 spring mvc4返回的json日期为Long的解决方案
  6. ZT:Delphi源程序格式书写规范
  7. java数组使用实验报告_Java课程实验报告实验六——异常处理
  8. Java知识积累——参数个数可变的函数(Varargs)
  9. ASP.NET读取自定义的config文件
  10. Sql Server 数据库实验报告
  11. Python 万能代码模版:数据可视化篇
  12. SpringBoot整合银联无跳转支付附源码
  13. vue 浏览器页面刷新
  14. sql优化之终极方案
  15. 乐蜂网八周年店庆有感
  16. 开源时代:刘韧对话任旭东崔宝秋章文嵩蒋涛
  17. 前端每日实战:77# 视频演示如何用纯 CSS 创作旗帜飘扬的动画
  18. 深恶痛绝,编程界的「劣驱良」
  19. 对大学三年学习生活的总结与反思
  20. 区块链+公链+区块浏览器+钱包APP

热门文章

  1. 华为路由器hilink怎么用_华为无线充电怎么用?MatePadPro无线充电使用方法
  2. 商城系统php功能模块,yershop商城系统的支付模块问题
  3. 小程序监听android返回键,如何监听小程序返回按钮事件?
  4. 数组添加进formdata_javascript – FormData追加数组中的项目
  5. 条令考试小程序辅助器_计算机一级考试干货!
  6. 在计算机桌面上添加小工具日历,实用桌面小工具时钟日历在win7中的添加方法...
  7. 神经网络如何调参、超参数的最优化方法、python实现
  8. python列表常用の操作
  9. 计算机专业后悔么,王言匀
  10. ES迁mysql_使用kafka连接器迁移mysql数据到ElasticSearch