鸿蒙综合讨论/触摸失效排查思路

触摸失效排查思路

触摸失效的形态很多:完全无响应、点击没反应但滑动正常、部分区域失灵、特定操作后全失灵。这篇给排查思路框架。

▍第一步:划层定位
三问划出问题层:系统层响应吗(下拉通知、系统手势正常吗——正常说明系统输入通道好);壳层响应吗(原生菜单、按钮正常吗——正常说明壳与系统之间好);框架区域响应吗(主内容区)。答案组合直接分型:全失灵查系统与主线程;壳好框架死查桥接层;部分区域死查区域映射。这个分法与冻屏六步法的第一步同源:先划层,再深挖。

▍桥接层的排查要点
框架区域失灵的高发根因:一,事件队列堵了(投递线程卡住——回想铁律:输入热路径零 IO,IO 冻结队列的案例都有日志可以佐证:队列线程的 IO 操作耗时)。二,合成事件的互杀(某个手势处理层拦截了事件没往下传;真实案例:输入代理顺手拦截了触摸的默认处理,结果系统后续的点击合成被取消,整个渲染区点击大面积失效——而菜单正常,极具迷惑性)。三,焦点与命中区域错(命中测试的坐标错——接坐标偏移篇)。四,grab 语义翻译错(框架期望的按住语义没被正确还原,点击全被当成拖拽——旧工程的触摸流策略在新场景撞出互补失效面的教训:症状局部修复不得升格全局规则)。

▍针对性实验
注入对照:自动化注入点击看反应(注入走系统通道,若注入有效而手触无效,查触摸特有路径如手掌抑制、边缘手势)。单指多指对比(单指好多指坏查手势合成层)。慢速快速对比(轻点与按住行为分化查时间阈值)。

▍回归三类基础手势
任何输入相关改动(事件 shim、手势层、焦点逻辑)上线前回归三类:点击、滚动、拖拽。这是 Air 系列的固定纪律——三类手势各走一遍能抓住绝大多数互杀类回归。

▍修复模式
统一事件入口(一处分发别两处);拦截要显式(要拦截的地方写明为什么,别顺手拦);grab 状态机完整(按住、跨越、释放、取消四态都处理)。

免费无广告的安装包可以在官网下载体验。
楼主 7 天前
想参与讨论?登录 或 30 秒注册。