在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事件的合并相关推荐

  1. QT 系统学习 day05 事件 HTTP网络请求, 音乐播放器,上位机串口通行

    1.HTTP  网络 1.头文件 : 网络 /***** HTTP 网络相关模块 *****/ #include <QNetworkAccessManager> /** 网络访问类 **/ ...

  2. Android 4.0 事件输入(Event Input)系统

    1. TouchScreen功能在Android4.0下不工作 原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了.凭直觉,Andro ...

  3. android bsp学习_Android BSP成长计划随笔之虚拟设备搭建和input系统

    由于工作关系,对Android关注将从FWK(Framework)转向BSP,也就是Linux Kernel.在工作的5年中,曾经数次研究过kernel,但一直没有合适的机会或者说推动力去深入研究.这 ...

  4. java后端系统学习总结 02_数据库基础学习、jdbc基础学习、er图基础学习、数据库——(完结)

    猿猿正在系统的学习一些计算机知识,和后端技术栈,目前阶段主要在系统学习java.此专栏,为我学习过程中的学习笔记,便于日后复习回顾来看,也很适合新人学习参考. 以下是猿猿对数据库和java深入的第一遍 ...

  5. React系统学习笔记

    ***当前阶段的笔记 *** 「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v 点击链接保存,或者复制本段内容,打开「阿里云盘」 ...

  6. 【Android】带你细看Android input系统中ANR的机制

    "本文基于Android13源码,分析Input系统的Anr实现原理" 在文章之前,先提几个问题: 如果在activity任意周期(onCreate,onResume等),同步执行 ...

  7. java后端系统学习总结 03_java Web基础学习

    猿猿正在系统的学习一些计算机知识,和后端技术栈,目前阶段主要在系统学习java.此专栏,为我学习过程中的学习笔记,便于日后复习回顾来看,也很适合新人学习参考呦. 以下是猿猿对JavaWeb的第一遍学习 ...

  8. Vue.js实战之系统学习第一节

    为什么叫系统学习呢?因为我以前接触过Vue.js,但是没学过它的原理,只是简单的使用了,使用的时候就觉得很好用,没有其他的什么感觉,但当我进入职场后,学习了很多的前端技术后,才发现这个技术的友好,被它 ...

  9. Vue.js实战之系统学习第七节

    想看上一节的请点击: Vue.js实战之系统学习第六节 接下来我们要学习第七节了,时间过的好快. 组件详解 组件是Vue.js的核心功能,也是整个框架设计最精彩的地方,当然也是最难掌握的.本章节将带你 ...

最新文章

  1. Python生物信息学⑥绘制热图及火山图
  2. 九十、Python的GUI系列 | QtDesigner进行界面设计
  3. 复习-css列表和表格相关属性
  4. SpringBoot中处理的转发与重定向
  5. Spring Cloud微服务之公共服务模块抽取(五)
  6. 【图像处理基础知识】中文车牌识别API-HyperLPR的应用与相关学习资料(python版)
  7. oracle数据库月份日期固定,oracle 日期函数介绍-数据库专栏,ORACLE
  8. 分布式事务解决方案之最大努力通知
  9. 公务员Python培训
  10. Mac下安装Eclipse
  11. 龙芯3A3000编译安装Postgresql12.2
  12. oracle查找用户名和密码忘记了,Oracle忘记用户名和密码的解决方案
  13. 《加密与解密》笔记五(二)
  14. matlab计算海洋浮力频率_MATLAB气象海洋简单粗暴教程(三十四)——MATLAB里画图的统计函数...
  15. pyTest官方手册(Release 4.2)之蹩脚翻译(9)
  16. 2018-10-20-C#-从零开始写-SharpDx-应用-初始化dx修改颜色
  17. CAD制图软件中多线段显示不正确怎么办?
  18. Metasploit-模块介绍
  19. Win10正常安装Matlab7.0后,运行出现Runtime Error错误解决方法
  20. 黑马视频学习笔记-for循环

热门文章

  1. srs直播 java开发,通过srs实现直播
  2. Word怎么删除空白页?这3种方法:适用于所有版本Word!
  3. 2020年6月六级翻译:红楼梦
  4. #小何不断努力# Day1
  5. rust react tauri app 现有前端项目打包(windows)
  6. 上半年要写的博客文章21
  7. Kinect坐标转换
  8. 数学小白的探索-欧拉和费马
  9. 《程序人生》系列-一个月了,我要谢谢,你、你、还有你
  10. 苹果怎么换行打字_2周内将你的打字速度提高3倍的方法