想要将计时器设置为1分钟,如果没有点击,请调用我的方法viewContract.lockScreen()
这是我的代码:
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
viewContract.lockScreen()
return super.dispatchTouchEvent(ev)
}
最佳答案
我会像这样对postDelayed(...)
进行Handler
:
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()
即可。
关于android - 如何设置点击计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59088451/