xUtils遇到界面点击无效的bug

xiaoxiao2021-02-28  118

xutils框架一直用得挺顺的,一次开发项目测试改了系统时间后所有注入的点击事件全部无效。巨严重的bug。好在查了源码后发现其实只是一个小逻辑错误,org.xutils.view包下EventListenerManager类是控制注入事件的,查找到事件触发前框架会查询是否重复点击,代码如下

if (AVOID_QUICK_EVENT_SET.contains(eventMethod)) { long timeSpan = System.currentTimeMillis() - lastClickTime; if (timeSpan < QUICK_EVENT_TIME_SPAN) { LogUtil.d("onClick cancelled: " + timeSpan); return null; } lastClickTime = System.currentTimeMillis(); }

默认QUICK_EVENT_TIME_SPAN两次点击间隔时间是300毫秒,如果用户在应用中点击一个按钮lastClickTime就会记录最后一次的点击时间,这个时候用户修改系统到过去的时间点那么timeSpan 也就是两次点击真实的间隔时间就会一直小于QUICK_EVENT_TIME_SPAN,导致点击时间一直无法执行

if (timeSpan < QUICK_EVENT_TIME_SPAN && timeSpan>0) { LogUtil.d("onClick cancelled: " + timeSpan); return null; } lastClickTime = System.currentTimeMillis();

所以只要加一个判断就可以解决这个问题,真实间隔时间不可能小于0,这样就避免操作过程中修改系统时间导致计算间隔错误

转载请注明原文地址: https://www.6miu.com/read-67781.html

最新回复(0)