이 시나리오를 처리하는 더 중요한 방법은 RxJava2와 함께 Throttling 연산자 (Throttle First)를 사용하는 것입니다. Kotlin에서이를 달성하는 단계 :
1). 종속성 :-build.gradle 앱 수준 파일에 rxjava2 종속성을 추가합니다.
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
2). View.OnClickListener를 구현하고 뷰의 OnClick () 메서드를 처리하는 첫 번째 스로틀 연산자를 포함하는 추상 클래스를 생성합니다. 코드 조각은 다음과 같습니다.
import android.util.Log
import android.view.View
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.subjects.PublishSubject
import java.util.concurrent.TimeUnit
abstract class SingleClickListener : View.OnClickListener {
private val publishSubject: PublishSubject<View> = PublishSubject.create()
private val THRESHOLD_MILLIS: Long = 600L
abstract fun onClicked(v: View)
override fun onClick(p0: View?) {
if (p0 != null) {
Log.d("Tag", "Clicked occurred")
publishSubject.onNext(p0)
}
}
init {
publishSubject.throttleFirst(THRESHOLD_MILLIS, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe { v -> onClicked(v) }
}
}
삼). 활동에서보기를 클릭 할 때이 SingleClickListener 클래스를 구현하십시오. 이것은 다음과 같이 달성 될 수 있습니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val singleClickListener = object : SingleClickListener(){
override fun onClicked(v: View) {
}
}
xm_viewl_id.setOnClickListener(singleClickListener)
}
위의 단계를 앱에 구현하면 600mS까지보기를 여러 번 클릭하지 않아도됩니다. 즐거운 코딩 되세요!