Android Message和obtainMessage的区别
Android 区别 message
2023-09-14 09:09:55 时间
类概述
定义一个包含任意类型的描述数据对象,此对象可以发送给Handler。对象包含两个额外的int字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作。
尽管Message的构造器是公开的,但是获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(), 这样是从一个可回收对象池中获取Message对象。
1、首先创建Handler对象:
- private Handler mHandler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- switch (msg.what) {
- case 1:
- textShowTV.setText("展示中...");
- break;
- }
- };
- };
2、然后是消息处理:
- //①,使用new Message()
- // Message mess = new Message();
- //②,使用Message.obtain()
- Message mess = Message.obtain();
- mess.what =1;
- //mHandler.obtainMessage(1)与上两行的代码一样,可以参考源码查看
- // Message mess = mHandler.obtainMessage(1);
- mHandler.sendMessage(mess);
通过比较我们会发现,这两种获取Message的实例的方法不一样,于是我看了源码,果然不一样:
进入obtain方法:
图1:
进入Message方法:
图2:
然后,再次点击obtain() 方法,代码又回归到了图1
总结:
上面的图1中obtain方法的注释中说得很明白:从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象
如果是这人的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销了。
相关文章
- 【Android】dip、dp、sp、pt和px的区别
- [android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题
- [Android Pro] static 和 Volatile 的区别
- [Android Pro] android中permission_group与permisson区别、作用
- Android中dip、dp、sp、pt和px的区别
- Android StringEntity() 和 UrlEncodedFormEntity() 的区别
- android程序崩溃后重启
- Android之Handler与AsyncTask的区别
- javascript:微信扫一扫下载android应用的引导页
- 129、《Android进阶》之第五篇 Fragment 的使用(转载)
- Android Studio系列教程六--Gradle多渠道打包(转载)
- Android之Handler与AsyncTask的区别
- Android学习笔记(37):用Configuration类获取和监听设备信息
- android: minSdkVersion、targetSdkVersion、CompileSdkVersion三个api版本号的区别
- Android 自定义View(二)绘制一个封闭多边形
- Android 9.0 10.0 11.0 开机动画支持mp4 视频播放
- Android 10.0 TV板 强制app横屏显示
- Android中 onTouchEvent() 与 onInterceptTouchEvent()事件的区别详解
- Android使用代码消除App数据并重新启动设备
- Android强指针sp和弱指针wp区别(六)
- Android中的USB中的UsbAccessory和UsbDevice的区别
- Android各个版本API的区别
- Android编译选项eng、user、userdebug的区别
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- Android Framework精编内核解析,助力高薪面试
- 【Android进阶】7、Android 各 SDK 版本的区别与兼容