Android在界面中重复点击导致多次跳转或打开多个相同界面的问题的解决方式

最近遇到Android在界面中重复点击导致多次跳转或打开多个相同界面的问题。这是由于当前界面在点击后,跳转到其他页面,当前页面还未转到后台时,再次触发点击事件导致。网上我主要见到了两种解决方式,一种是设置singletop的flag,不过这种方式在遇到使用startActivityForResult方式启动Activity时不会产生作用,所以我选择的是第二种,设置一个屏蔽机制,及设定在多少时间内,重复点击无效。经过我的非常不严谨的测试(=。=),设置300毫秒左右在现在主流手机上再出现问题的几率已经极小,250毫秒则不能很好的解决这个问题。

网上对于这个方法提供的代码存在逻辑上的问题(至少我看到的是这样),它会导致如果快速点击,则除第一次以外所有的点击都无效,所以我对该方法代码进行了略微的调整。该方法的原理是这样的,用一个long mClickTime记录下点击时间,如果相邻两次点击时间的差小于300ms,则不响应第二次点击,mClickTime不变,若大于300ms,则修改mClickTime为第二次点击的时间。

为了代码重用方便,最好将这个方法加入到一个继承Activity的baseActivity类中,同时设置一个开关,在需要时才打开这个功能,因为经过我的测试,300ms其实也是一个很长的时间,在一些界面中的操作中会降低用户体验,给人以一种系统有些卡顿的感觉。

以下是代码:

/**
     * time of last click
     */
    private long lastClickTime;

    /**
     * switch of limit for click
     */
    private boolean clickLimit = false;
protected  void setClickLimit(boolean clickLimit){
        this.clickLimit = clickLimit;
    }

    private boolean isFastDoubleClick() {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if (timeD>300)
            lastClickTime = time;
        if (!clickLimit)
            return timeD < 0;
        return timeD <= 300;
    }



你可能感兴趣的:(Android小tips)