Rename
This commit is contained in:
1 parent
b86d90021c
commit
6c0757c91b
972 files changed
+6885
-7321
No files matched your search
@@ -0,0 +1,37 @@
|
||||
package io.legato.kazusa.utils
|
||||
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import androidx.lifecycle.LiveData
|
||||
|
||||
/**
|
||||
* 合并发送,只发送最新数据
|
||||
* @param delay 发送时间间隔
|
||||
*/
|
||||
class ConflateLiveData<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)
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
public override fun postValue(value: T) {
|
||||
data = value
|
||||
val postDelay = postTime + delay - System.currentTimeMillis()
|
||||
if (postDelay > 0) {
|
||||
handler.removeCallbacks(sendRunnable)
|
||||
handler.postDelayed(sendRunnable, postDelay)
|
||||
} else {
|
||||
handler.removeCallbacks(sendRunnable)
|
||||
postTime = System.currentTimeMillis()
|
||||
super.postValue(value)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user