pull/2694/head
parent
ff11cbe780
commit
2c74cd7255
@ -0,0 +1,30 @@ |
||||
package io.legado.app.utils |
||||
|
||||
import android.os.Handler |
||||
import android.os.Looper |
||||
import androidx.lifecycle.LiveData |
||||
|
||||
class DelayLiveData<T>(val delay: Int) : LiveData<T>() { |
||||
private val handler = Handler(Looper.getMainLooper()) |
||||
private val sendRunnable = Runnable { sendData() } |
||||
private var postTime = 0L |
||||
private var data: T? = null |
||||
|
||||
private fun sendData() { |
||||
data?.let { |
||||
super.postValue(it) |
||||
} |
||||
} |
||||
|
||||
public override fun postValue(value: T) { |
||||
data = value |
||||
if (System.currentTimeMillis() >= postTime + delay) { |
||||
handler.removeCallbacks(sendRunnable) |
||||
postTime = System.currentTimeMillis() |
||||
super.postValue(value) |
||||
} else { |
||||
handler.removeCallbacks(sendRunnable) |
||||
handler.postDelayed(sendRunnable, delay - System.currentTimeMillis() + postTime) |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue