倒数计时器的 GrepCode显示它使用了一个 Handler。使用处理程序有什么具体原因吗?因为当我们使用线程进行一些用户交互时,通常会使用处理程序。但是这里没有我可以在倒数计时器中看到的线程。并且倒数计时器在它自己的 UI 线程中使用时也可以工作。
3 回答
因为当我们使用线程进行一些用户交互时,通常会使用处理程序
真的。但是,“一般”!=“总是”。
碰巧Handler
有用于计时目的的有用方法,例如postDelayed()
and sendMessageDelayed()
,它CountDownTimer
利用了。您也可以自己使用它们。它们既漂亮又轻巧,因为正如您所指出的,我们不需要单独的线程,就像事情Timer
和TimerTask
做的那样。
并且倒数计时器在它自己的 UI 线程中使用时也可以工作。
它需要一个附加的线程Looper
才能使用Handler
。CountDownTimer
可能通常在主应用程序线程上使用,如果不是这样,在一些单独HandlerThread
的 .
处理程序用于在倒数计时器的生命周期内执行某些任务。
假设您正在实现一个秒表,并且您希望 UI 每秒更改一次以显示倒计时,onTick() 处理程序可以执行此操作。说,当倒数计时器完成工作时,您必须关闭 UI,将代码放在 onfinish() 处理程序方法中。
您不仅可以使用处理程序在线程之间进行通信。处理程序能够在定义的时间后执行一些代码(postDelayed 函数)。在 android OS Handler 是首选工具(而不是 java Timer),以防万一您需要在时间间隔后执行一些代码。在倒数计时器中,处理程序用于以一秒的间隔调整代码。