25 lines
645 B
Kotlin
25 lines
645 B
Kotlin
package com.sw.platecabinet.utils
|
|
|
|
class Debouncer(private val delayMillis: Long) {
|
|
private var lastActionTime = 0L
|
|
|
|
/**
|
|
* 执行防抖操作
|
|
* @param action 要执行的操作
|
|
* @return Boolean 是否执行了操作 (true=已执行, false=被防抖)
|
|
*/
|
|
fun debounce(action: () -> Unit): Boolean {
|
|
val currentTime = System.currentTimeMillis()
|
|
if (currentTime - lastActionTime >= delayMillis) {
|
|
lastActionTime = currentTime
|
|
action()
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// 重置防抖计时
|
|
fun reset() {
|
|
lastActionTime = 0L
|
|
}
|
|
} |