当前位置: 首页 > news >正文

Handler系列-sendMessage和post的区别

sendMessage和post基本一样,区别在于post的Runnable会被赋值给Message的callback,在最后调用dispatchMessage的时候,callback会被触发执行。

1.sendMessage

  • 调用sendMessageDelayed发送消息
public class Handler {public final boolean sendMessage(Message msg){return sendMessageDelayed(msg, 0);}
}

2.post

  • 通过Message的obtain创建Message
  • 将Runnable赋值给Message的callback
  • 调用sendMessageDelayed发送消息
public class Handler {public final boolean post(Runnable r){return  sendMessageDelayed(getPostMessage(r), 0);}
}
public class Handler {private static Message getPostMessage(Runnable r) {Message m = Message.obtain(); //从缓存获取Messagem.callback = r; //Runnable 赋值给Message的callbackreturn m;}
}

3.消息执行

public class Handler {public void dispatchMessage(Message msg) {if (msg.callback != null) {//post会走这里,因为它callback不为nullhandleCallback(msg);} else {if (mCallback != null) {if (mCallback.handleMessage(msg)) {return;}}handleMessage(msg);//sendMessage会走这里,调用Handler的handleMessage}}private static void handleCallback(Message message) {message.callback.run();//post的Runnable执行}
}

http://www.lryc.cn/news/241748.html

相关文章:

  • java中 自动装箱与拆箱,基本数据类型,java堆与栈,面向对象与面向过程
  • C语言第二十八弹--输入一个非负整数,返回组成它的数字之和
  • redis---主从复制及哨兵模式(高可用)
  • 【不同请求方式在springboot中对应的注解】
  • 前端入门(三)Vue生命周期、组件技术、事件总线、
  • 消息推送到微信,快速实现WxPusher
  • 【Spring篇】JDK动态代理
  • 【从零开始实现意图识别】中文对话意图识别详解
  • 腾讯云点播小程序端上传 SDK
  • 【MATLAB源码-第88期】基于matlab的灰狼优化算法(GWO)的栅格路径规划,输出做短路径图和适应度曲线
  • electron使用electron-builder macOS windows 打包 签名 更新 上架
  • autojs项目搭建和入门实践
  • uni-app 跨端开发注意事项
  • 在 vscode 中的json文件写注释,不报错的解决办法
  • 基于uniapp的 电子书小程序——需求整理
  • Hutool HttpRequest 首次请求正常 第二次被系统拦截
  • github国内访问小解(windows)
  • NX二次开发UF_CSYS_set_wcs_display 函数介绍
  • DNS 区域传输 (AXFR)
  • Ubuntu 安装 JMeter:轻松上手
  • 在工业生产环境下,服务器没有互联网,如何通过代理自己的电脑上互联网?
  • 【brpc学习实践六】backup request场景案例
  • el-table导出为excel表格
  • CVE-2022-0543(Redis 沙盒逃逸漏洞)
  • 查swap内存使用
  • Element UI的Tabs 标签页位置导航栏去除线条
  • 【Python 训练营】N_1 验证密码
  • Pinia 和 Vuex 的对比,storeToRefs 的原理
  • Mycat分库分表的操作(配置)
  • android的canvas的clipRegion废弃替代代码