android 针对文本框输入实时延迟保存的逻辑操作
2022-05-27 本文已影响0人
为自己代颜_
直接上代码:
// 保存请求任务
private var mSaveReqTask: Disposable? = null
// 每次保存请求的最短节流事件间隔
private val THROTTLE_TIME_INTERVAL = 1000L
/**
* 节流,当时间过THROTTLE_TIME_INTERVAL以后。如果没有新的请求,则执行操作,否则重置时间
* @param enable 是否节流 true等待THROTTLE_TIME_INTERVAL后执行;false直接执行
*/
private fun throttleSaveData(enable: Boolean) {
mSaveReqTask = mSaveReqTask?.let {
if(!it.isDisposed) {
it.dispose()
}
null
}
if(enable) {
mSaveReqTask = Observable.timer(THROTTLE_TIME_INTERVAL, TimeUnit.MILLISECONDS).doOnNext {
saveData()
}.subscribe()
} else {
saveData(true)
}
}
最后onDestroy中执行如下:
mSaveReqTask?.let {
it.dispose()
}