Android项目开发时需要考虑一下用户重复提交问题,有时因为用户手抖导致重复点击、或者网络出现异常导致多次请求同时到达。本人主要考虑以下2两个方面进行解决;
1. 在Android端进行限制
可以在用户点击事件后,将按钮或者列表进行禁用,这样可以通过前台进行限制,解决用户手抖导致的重复请求问题。代码如下:
submitButton.setEnable(false);
//在网络请求成功或者失败时,再将Button的可点击事件置为true
submitButton.setEnable(true);
2. 添加点击事件时间间隔
public class ButtonUtils {
private static long lastClickTime = 0;
private static long DIFF = 2000;
private static int lastButtonId = -1;
/**
* 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
*
* @return
*/
public static boolean isFastDoubleClick() {
return isFastDoubleClick(-1, DIFF);
}
/**
* 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
*
* @param buttonId
* @return
*/
public static boolean isFastDoubleClick(int buttonId) {
return isFastDoubleClick(buttonId, DIFF);
}
/**
* 判断两次点击的间隔,且判断为与上次点击按钮是否为同一按钮,如果小于diff,则认为是多次无效点击,
*
* @param buttonId
* @param diff
* @return
*/
public static boolean isFastDoubleClick(int buttonId, long diff) {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) {
return true;
}
lastClickTime = time;
lastButtonId = buttonId;
return false;
}
}
3. Java后端进行判断
本方法主要基于若依框架中的@RepeatSubmit实现,具体代码逻辑请参考