본문 바로가기
Language/Android

[Android] 안드로이드_버튼 중복클릭 방지하기( feat. OnSingleClickListener)

by 썸머워즈 2019. 9. 15.
반응형



버튼 중복클릭 방지



OnClick 이벤트를 사용하다보면 빠르게 연속으로 누르게되면 중복으로 클릭처리가 되어 서버에 중복 요청이나 함수가 두번이상 중복 실행이 될 가능성이 있다.


이러한 부분을 처리해주는 방법은 무수히 많겠지만 이번에 접하게된 방법이 있기에 기록해둔다.


View.OnClickListener 를 구현받는 추상클래스를 따로 만들어 주는 방법이다.

import android.os.SystemClock;
import android.view.View;

public abstract class OnSingleClickListener implements View.OnClickListener{

//중복 클릭 방지 시간 설정 ( 해당 시간 이후에 다시 클릭 가능 )
private static final long MIN_CLICK_INTERVAL = 600;
private long mLastClickTime = 0;

public abstract void onSingleClick(View v);

@Override
public final void onClick(View v) {
long currentClickTime = SystemClock.uptimeMillis();
long elapsedTime = currentClickTime - mLastClickTime;
mLastClickTime = currentClickTime;

// 중복클릭 아닌 경우
if (elapsedTime > MIN_CLICK_INTERVAL) {
onSingleClick(v);
}
}
}

사용법은 의외로 간단하다


기존 OnClickListener() 를 처리해주던 방식에서 new OnSingleClickListener() 로 바꿔준뒤


안에 있는 onSingleClick() 함수로 처리해주면 된다.

radioButton.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
//기존 방식과 마찬가지로 Click 시 수행할 작업 처리
});


반응형


댓글

TOP