如何设置点击定时器?

How to set timer on click?

想设置定时器1分钟,如果没有点击,就调用我的方法viewContract.lockScreen()

这是我的代码:

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
    viewContract.lockScreen()
    return super.dispatchTouchEvent(ev)
}

我会在 Handler 上做一个 postDelayed(...),例如:

val handler = Handler(Looper.getMainLooper())
val timerDuration = TimeUnit.MINUTES.toMillis(1)
val timerAction = Runnable { /* call your method here... */ }

fun startTimer() =  handler.postDelayed(timerAction, timerDuration)
fun cancelTimer() = handler.removeCallbacks(timerAction)

编辑:

这个问题有点不清楚,因为你说你想在没有交互的情况下 1 分钟后执行 viewContract.lockScreen(),但是你在 dispatchTouchEvent 中调用了相同的方法触摸发生。但在我看来,你应该这样称呼它:

val handler = Handler(Looper.getMainLooper())
val timerDuration = TimeUnit.MINUTES.toMillis(1)
val timerAction = Runnable { viewContract.lockScreen() }

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
    cancelTimer()
    return super.dispatchTouchEvent(ev)
}

fun startTimer() =  handler.postDelayed(timerAction, timerDuration)
fun cancelTimer() = handler.removeCallbacks(timerAction)

此外,计时器应该何时开始也不是很清楚,但无论如何,只要在应该发生的时候调用 startTimer()