您的位置:首页 > 其它

xUtils遇到界面点击无效的bug

2017-07-11 15:27 295 查看
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,这样就避免操作过程中修改系统时间导致计算间隔错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xutils 点击无效