Handler基本使用(二)new Message 、 Handler.obtainMessage和Message.obtain
通常使用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相关推荐
- Android Handler的使用(二)
Handler的使用(二) 一. Handler与线程的关系 Handler在默认情况下,实际上它和调用它的Activity是处于同一个线程的. 例如在Handler的使用(一)的示例1 ...
- 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 ...
- Android 系统(59)---Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)
Android开发:Handler异步通信机制全面解析(包含Looper.Message Queue) 前言 最近刚好在做关于异步通信的需求,那么,今天我们来讲解下Android开发中的Handler ...
- 使用spring-cloud-bus报错error occurred in message handler [org.springframework.integration.amqp.outbound
完整报错信息 error occurred in message handler [org.springframework.integration.amqp.outbound.AmqpOutbound ...
- handler回调主线程_Android使用Handler实现子线程与子线程、子线程与主线程之间通信...
转载:https://blog.csdn.net/shaoenxiao/article/details/54561753 今天这篇文章只讲一下怎么使用Handler实现子线程与子线程之间.子线程与主线 ...
- handler相关学习(三)handler必背
问题一.Android-Handler同步屏障,消息机制之同步屏障 Android-Handler同步屏障 - 简书 Handler设置同步屏障之后可以拦截Looper对同步消息的获取和分发.加入同步 ...
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...
MainActivity如下: package cc.c;import android.app.Activity; import android.os.Bundle; import android.o ...
- Android Message和obtainMessage的区别
Android Message和obtainMessage的区别 类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler.对象包含两个额外的int字段和一个额外的对象字段,这样可以 ...
- Message创建方式:new Message和obtainMessage的区别
前言 创建Message对象的时候,有三种方式,分别为: 1.Message msg = new Message(); 2.Message msg2 = Message.obtain(); 3.Mes ...
- android handler作用,3.2.4 Handler的作用
3.2.4 Handler的作用 根据Handler处理Message消息相关特性和前面的实例,可以得出这样的结论:Handler主要作用是异步处理较费时的逻辑,优先将界面返回给用户,异步处理完成后再 ...
最新文章
- cf两边黑屏怎么解决win10_Win10电脑开机黑屏只有鼠标指针无法进入桌面的解决方法...
- axis1 web Service 环境部署
- 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
- Qt之格栅布局(QGridLayout)
- The method getTextContent() is undefined for the type Node 错误解决办法
- PyCharm基本使用
- 尚硅谷RabbitMQ学习笔记(上)
- 屏幕录像专家的使用说明
- 2020年全球激光雷达行业竞争格局分析,技术路线正处于快速发展迭代阶段「图」
- 程序员修炼之道(一)
- uint 数据类型理解
- matlab get(gcf,'postion ')相关解释
- linux服务器之间的文件同步(双向同步unison+inotify)
- 正则表达式用法及实例
- ios python 越狱_iOS越狱--USB连接SSH
- photoshop基本的操作
- 国际域名缩写____各个国家
- VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略
- 《简明Python教程》读书笔记
- vue扫描二维码,真机调试
热门文章
- php人事考勤系统,基于PHPMySQL的考勤系统
- MarkDown文本首行怎么缩进?
- HP DL380G9服务器故障排除--post、F10
- 180°舵机角度控制(mg996 + stm32F1)
- 爬虫概念与编程学习之如何爬取网页源代码(一)
- 深入浅出学Spring Data JPA toPredicate Predicate[] p = new Predicate[list.size()]; query.where(cb.and 201
- 支付宝借呗跟花呗有什么区别?
- 34、查询课程名称为数学,且分数低于60的学生姓名和分数(不重点)(自己做出)
- linux指定日期月末,linux 获取某个日期对应的月末日期方法
- 和德天老师学习如果把系统目录文件名保存到外部xlsx文件(保存文件--2小节)