通常使用handler发送信息时,会使用下面两种方式

     //方法1Message msg = new Message();msg.what = 1;msg.arg1 = 2;msg.arg2 = 3;msg.obj = "demo";mHandler.sendMessage(msg);//方法2Message msg2 = mHandler.obtainMessage();//obtainMessage();//obtainMessage(what);//obtainMessage(int what,Object obj); //obtainMessage(int what,int arg1,int arg2);//obtainMessage(int what,int arg1,int arg2,Object obj );msg2.what = 1;msg2.arg1 = 2;msg2.arg2 = 3;msg2.obj = "demo";msg2.sendToTarget();//方法3Message msg3 = Message.obtain();msg3.sendToTarget();

实际运用中,通常使用第二种方法或者第三种方法(其实是一样的,handler.obtainMessage最终也是调用了Message的obtain方法)。

在Message的官方文档中,有这样一句话:

While the constructor of Message is public, the best way to get one of these is to call Message.obtain() or one of the Handler.obtainMessage()

methods, which will pull them from a pool of recycled objects.

意思是说,虽然Message的构造方法是公共的(可以通过New操作创建一个Message对象),但获取实例最好的方式还是Message.obtain()或者 Handler.obtainMessage() ,这两种方法提供的对象是消息池中那些已经创建但不再使用的对象。节约了内存资源。

message的pool具体是怎么实现的,这篇文章讲的很详细了 点击打开链接

Handler基本使用(二)new Message 、 Handler.obtainMessage和Message.obtain相关推荐

  1. Android Handler的使用(二)

    Handler的使用(二) 一. Handler与线程的关系        Handler在默认情况下,实际上它和调用它的Activity是处于同一个线程的. 例如在Handler的使用(一)的示例1 ...

  2. Android Handler Message 里面的message.what, message.arg1,message.obj,obtainMessage, message.setData的使用

    Android Handler Message 里面的message.what, message.arg1,message.arg2,message.obj,obtainMessage, messag ...

  3. Android 系统(59)---Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)

    Android开发:Handler异步通信机制全面解析(包含Looper.Message Queue) 前言 最近刚好在做关于异步通信的需求,那么,今天我们来讲解下Android开发中的Handler ...

  4. 使用spring-cloud-bus报错error occurred in message handler [org.springframework.integration.amqp.outbound

    完整报错信息 error occurred in message handler [org.springframework.integration.amqp.outbound.AmqpOutbound ...

  5. handler回调主线程_Android使用Handler实现子线程与子线程、子线程与主线程之间通信...

    转载:https://blog.csdn.net/shaoenxiao/article/details/54561753 今天这篇文章只讲一下怎么使用Handler实现子线程与子线程之间.子线程与主线 ...

  6. handler相关学习(三)handler必背

    问题一.Android-Handler同步屏障,消息机制之同步屏障 Android-Handler同步屏障 - 简书 Handler设置同步屏障之后可以拦截Looper对同步消息的获取和分发.加入同步 ...

  7. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...

    MainActivity如下: package cc.c;import android.app.Activity; import android.os.Bundle; import android.o ...

  8. Android Message和obtainMessage的区别

    Android Message和obtainMessage的区别 类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler.对象包含两个额外的int字段和一个额外的对象字段,这样可以 ...

  9. Message创建方式:new Message和obtainMessage的区别

    前言 创建Message对象的时候,有三种方式,分别为: 1.Message msg = new Message(); 2.Message msg2 = Message.obtain(); 3.Mes ...

  10. android handler作用,3.2.4 Handler的作用

    3.2.4 Handler的作用 根据Handler处理Message消息相关特性和前面的实例,可以得出这样的结论:Handler主要作用是异步处理较费时的逻辑,优先将界面返回给用户,异步处理完成后再 ...

最新文章

  1. cf两边黑屏怎么解决win10_Win10电脑开机黑屏只有鼠标指针无法进入桌面的解决方法...
  2. axis1 web Service 环境部署
  3. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
  4. Qt之格栅布局(QGridLayout)
  5. The method getTextContent() is undefined for the type Node 错误解决办法
  6. PyCharm基本使用
  7. 尚硅谷RabbitMQ学习笔记(上)
  8. 屏幕录像专家的使用说明
  9. 2020年全球激光雷达行业竞争格局分析,技术路线正处于快速发展迭代阶段「图」
  10. 程序员修炼之道(一)
  11. uint 数据类型理解
  12. matlab get(gcf,'postion ')相关解释
  13. linux服务器之间的文件同步(双向同步unison+inotify)
  14. 正则表达式用法及实例
  15. ios python 越狱_iOS越狱--USB连接SSH
  16. photoshop基本的操作
  17. 国际域名缩写____各个国家
  18. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略
  19. 《简明Python教程》读书笔记
  20. vue扫描二维码,真机调试

热门文章

  1. php人事考勤系统,基于PHPMySQL的考勤系统
  2. MarkDown文本首行怎么缩进?
  3. HP DL380G9服务器故障排除--post、F10
  4. 180°舵机角度控制(mg996 + stm32F1)
  5. 爬虫概念与编程学习之如何爬取网页源代码(一)
  6. 深入浅出学Spring Data JPA toPredicate Predicate[] p = new Predicate[list.size()]; query.where(cb.and 201
  7. 支付宝借呗跟花呗有什么区别?
  8. 34、查询课程名称为数学,且分数低于60的学生姓名和分数(不重点)(自己做出)
  9. linux指定日期月末,linux 获取某个日期对应的月末日期方法
  10. 和德天老师学习如果把系统目录文件名保存到外部xlsx文件(保存文件--2小节)