程序人生

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()
        }
上一篇下一篇

猜你喜欢

热点阅读