美文网首页Android进阶+实战Android开发移动开发
[Android] 防止连续点击打开两个重复页面的小技巧

[Android] 防止连续点击打开两个重复页面的小技巧

作者: 离岛LOGAN | 来源:发表于2016-04-12 22:59 被阅读6961次

    我们在开发APP的过程中经常会遇到在某些低端机或者在机器响应比较慢的情况下手抖连续点击某个页面(当然不排除有些人故意这么做)重复弹出好几个相同的页面,不过我发现微信这样的应用都没有做处理……但还是要分享一下我是怎么解决的。

    1、通过判断两次点击的时间间隔来防止重复点击

    工具类:

     /**
     * Created by mafei on 15/12/8.
     */
    public class NoDoubleClickUtils {
        private static long lastClickTime;
        private final static int SPACE_TIME = 500;
    
        public static void initLastClickTime() {
            lastClickTime = 0;
        }
    
        public synchronized static boolean isDoubleClick() {
            long currentTime = System.currentTimeMillis();
            boolean isClick2;
            if (currentTime - lastClickTime >
                    SPACE_TIME) {
                isClick2 = false;
            } else {
                isClick2 = true;
            }
            lastClickTime = currentTime;
            return isClick2;
        }
    } 
    

    使用方式:

    /**
         * 点击事件
         */
        private View.OnClickListener logListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!NoDoubleClickUtils.isDoubleClick()) {
                    事件响应方法
                }
            }
        };
    

    2、通过修改manifest中页面的launchMode属性改为单例模式

    <!-- 市场网贷产品页 -->
            <activity
                android:name=".activity.market.CreditRecordActivity"
                android:launchMode="singleTask"
                android:screenOrientation="portrait" />
    

    3、利用RxBinding实现防重复点击

    RxBinding 是 Jake Wharton 的一个开源库,它提供了一套在 Android 平台上的基于 RxJava 的 Binding API。

    RxView.clickEvents(button)
        .throttleFirst(500, TimeUnit.MILLISECONDS)
        .subscribe(clickAction);
    

    FullStackEngineer的公众号,更多分享

    相关文章

      网友评论

      • nothingwxq:第一个方法,为嘛加同步呀,感觉不需要吧,都是在主线程?
      • Chauncey_Chen:RX Java 有个方法 叫 scXXX,具体忘了,可以延时触发
      • 大张鑫:好像rxjava也可以处理

      本文标题:[Android] 防止连续点击打开两个重复页面的小技巧

      本文链接:https://www.haomeiwen.com/subject/cqywlttx.html