इस परिदृश्य को संभालने का अधिक महत्वपूर्ण तरीका RxJava2 के साथ थ्रॉटलिंग ऑपरेटर (थ्रॉटल फर्स्ट) का उपयोग करना है। कोटलिन में इसे प्राप्त करने के लिए कदम:
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) }
}
}
3)। गतिविधि में देखने के क्लिक पर इस सिंगलक्लिकस्टनर वर्ग को लागू करें। इसे निम्न प्रकार से प्राप्त किया जा सकता है:
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 तक किसी दृश्य पर कई क्लिकों से बचा जा सकता है। हैप्पी कोडिंग!