Input系统学习-----move事件的合并
在onTouchEvent里打印log跟踪ACTION_DOWN事件和ACTION_MOVE事件的堆栈,会发现不一样,这里直接说一下结论,在应用端接收到touch事件的时候,会对move事件会进行合并,合并到event的history数据中,这样就不用频繁的在主线程中传送move数据,move事件的传送和Chreographer关联起来,屏幕刷新一次,调用一次move事件的传送,在这期间的move事件合并到history数据中,可以通过获取history相关方法去得到。
合并的处理可以跟踪consumeBatchedInputEvents方法看到,这个承上启下的方法,我们就可以通过其直观翻译“消费批量深入事件”来进行记忆。
刚开始看MotionEvent的时候,还很好奇,MotionEvent里的history数据是怎么来的,
接触到consumeBatchedInputEvents就贯穿起来了,可以看出,合成是在应用端进行的,服务端(IMS)的motionevent是单个的瞬时状态,是没有history数据的,input从下到上的处理流程真是复杂,一个touch的传送是那样的曲折。
frameworks/base/core/java/android/view/MotionEvent.java
98 * void printSamples(MotionEvent ev) { 99 * final int historySize = ev.getHistorySize(); 100 * final int pointerCount = ev.getPointerCount(); 101 * for (int h = 0; h < historySize; h++) { 102 * System.out.printf("At time %d:", ev.getHistoricalEventTime(h)); 103 * for (int p = 0; p < pointerCount; p++) { 104 * System.out.printf(" pointer %d: (%f,%f)", 105 * ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h)); 106 * } 107 * } 108 * System.out.printf("At time %d:", ev.getEventTime()); 109 * for (int p = 0; p < pointerCount; p++) { 110 * System.out.printf(" pointer %d: (%f,%f)", 111 * ev.getPointerId(p), ev.getX(p), ev.getY(p)); 112 * } 113 * }
Input系统学习-----move事件的合并相关推荐
- QT 系统学习 day05 事件 HTTP网络请求, 音乐播放器,上位机串口通行
1.HTTP 网络 1.头文件 : 网络 /***** HTTP 网络相关模块 *****/ #include <QNetworkAccessManager> /** 网络访问类 **/ ...
- Android 4.0 事件输入(Event Input)系统
1. TouchScreen功能在Android4.0下不工作 原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了.凭直觉,Andro ...
- android bsp学习_Android BSP成长计划随笔之虚拟设备搭建和input系统
由于工作关系,对Android关注将从FWK(Framework)转向BSP,也就是Linux Kernel.在工作的5年中,曾经数次研究过kernel,但一直没有合适的机会或者说推动力去深入研究.这 ...
- java后端系统学习总结 02_数据库基础学习、jdbc基础学习、er图基础学习、数据库——(完结)
猿猿正在系统的学习一些计算机知识,和后端技术栈,目前阶段主要在系统学习java.此专栏,为我学习过程中的学习笔记,便于日后复习回顾来看,也很适合新人学习参考. 以下是猿猿对数据库和java深入的第一遍 ...
- React系统学习笔记
***当前阶段的笔记 *** 「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v 点击链接保存,或者复制本段内容,打开「阿里云盘」 ...
- 【Android】带你细看Android input系统中ANR的机制
"本文基于Android13源码,分析Input系统的Anr实现原理" 在文章之前,先提几个问题: 如果在activity任意周期(onCreate,onResume等),同步执行 ...
- java后端系统学习总结 03_java Web基础学习
猿猿正在系统的学习一些计算机知识,和后端技术栈,目前阶段主要在系统学习java.此专栏,为我学习过程中的学习笔记,便于日后复习回顾来看,也很适合新人学习参考呦. 以下是猿猿对JavaWeb的第一遍学习 ...
- Vue.js实战之系统学习第一节
为什么叫系统学习呢?因为我以前接触过Vue.js,但是没学过它的原理,只是简单的使用了,使用的时候就觉得很好用,没有其他的什么感觉,但当我进入职场后,学习了很多的前端技术后,才发现这个技术的友好,被它 ...
- Vue.js实战之系统学习第七节
想看上一节的请点击: Vue.js实战之系统学习第六节 接下来我们要学习第七节了,时间过的好快. 组件详解 组件是Vue.js的核心功能,也是整个框架设计最精彩的地方,当然也是最难掌握的.本章节将带你 ...
最新文章
- Python生物信息学⑥绘制热图及火山图
- 九十、Python的GUI系列 | QtDesigner进行界面设计
- 复习-css列表和表格相关属性
- SpringBoot中处理的转发与重定向
- Spring Cloud微服务之公共服务模块抽取(五)
- 【图像处理基础知识】中文车牌识别API-HyperLPR的应用与相关学习资料(python版)
- oracle数据库月份日期固定,oracle 日期函数介绍-数据库专栏,ORACLE
- 分布式事务解决方案之最大努力通知
- 公务员Python培训
- Mac下安装Eclipse
- 龙芯3A3000编译安装Postgresql12.2
- oracle查找用户名和密码忘记了,Oracle忘记用户名和密码的解决方案
- 《加密与解密》笔记五(二)
- matlab计算海洋浮力频率_MATLAB气象海洋简单粗暴教程(三十四)——MATLAB里画图的统计函数...
- pyTest官方手册(Release 4.2)之蹩脚翻译(9)
- 2018-10-20-C#-从零开始写-SharpDx-应用-初始化dx修改颜色
- CAD制图软件中多线段显示不正确怎么办?
- Metasploit-模块介绍
- Win10正常安装Matlab7.0后,运行出现Runtime Error错误解决方法
- 黑马视频学习笔记-for循环