方法一: 设置activity启动模式为SingleTop
缺点:容易遗漏
方法二: 通过拦截触摸事件的派发
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (checkDoubleClick()) {
return true;
}
}
return super.dispatchTouchEvent(ev);
}
/** 判断是否是快速点击 */
private static long lastClickTime;
public static boolean checkDoubleClick() {
//点击时间
long clickTime = SystemClock.uptimeMillis();
//如果当前点击间隔小于500毫秒
if (lastClickTime >= clickTime - 500) {
return true;
}
//记录上次点击时间
lastClickTime = clickTime;
return false;
}
缺点: 会导致页面跳转后的500ms所有的点击都失效
以上两种方法都有缺点,不建议使用,推荐使用下面的方法三
方法三: 拦截startActivity方法,查看源码得知startActivity方法最终走的是startAct