Avoid button multiple rapid clicks

前端 未结 20 1472
猫巷女王i
猫巷女王i 2020-11-28 02:55

I have a problem with my app that if the user clicks the button multiple times quickly, then multiple events are generated before even my dialog holding the button disappear

20条回答
  •  情歌与酒
    2020-11-28 03:14

    Similar Solution using RxJava

    import android.view.View;
    
    import java.util.concurrent.TimeUnit;
    
    import rx.android.schedulers.AndroidSchedulers;
    import rx.functions.Action1;
    import rx.subjects.PublishSubject;
    
    public abstract class SingleClickListener implements View.OnClickListener {
        private static final long THRESHOLD_MILLIS = 600L;
        private final PublishSubject viewPublishSubject = PublishSubject.create();
    
        public SingleClickListener() {
            viewPublishSubject.throttleFirst(THRESHOLD_MILLIS, TimeUnit.MILLISECONDS)
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Action1() {
                        @Override
                        public void call(View view) {
                            onClicked(view);
                        }
                    });
        }
    
        @Override
        public void onClick(View v) {
            viewPublishSubject.onNext(v);
        }
    
        public abstract void onClicked(View v);
    }
    

提交回复
热议问题