如何设置点击定时器?
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()
。
想设置定时器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()
。