2

倒数计时器的 GrepCode显示它使用了一个 Handler。使用处理程序有什么具体原因吗?因为当我们使用线程进行一些用户交互时,通常会使用处理程序。但是这里没有我可以在倒数计时器中看到的线程。并且倒数计时器在它自己的 UI 线程中使用时也可以工作。

4

3 回答 3

3

因为当我们使用线程进行一些用户交互时,通常会使用处理程序

真的。但是,“一般”!=“总是”。

碰巧Handler有用于计时目的的有用方法,例如postDelayed()and sendMessageDelayed(),它CountDownTimer利用了。您也可以自己使用它们。它们既漂亮又轻巧,因为正如您所指出的,我们不需要单独的线程,就像事情TimerTimerTask做的那样。

并且倒数计时器在它自己的 UI 线程中使用时也可以工作。

它需要一个附加的线程Looper才能使用HandlerCountDownTimer可能通常在主应用程序线程上使用,如果不是这样,在一些单独HandlerThread的 .

于 2013-10-14T18:03:52.673 回答
1

处理程序用于在倒数计时器的生命周期内执行某些任务。

假设您正在实现一个秒表,并且您希望 UI 每秒更改一次以显示倒计时,onTick() 处理程序可以执行此操作。说,当倒数计时器完成工作时,您必须关闭 UI,将代码放在 onfinish() 处理程序方法中。

于 2013-10-14T17:59:14.127 回答
1

您不仅可以使用处理程序在线程之间进行通信。处理程序能够在定义的时间后执行一些代码(postDelayed 函数)。在 android OS Handler 是首选工具(而不是 java Timer),以防万一您需要在时间间隔后执行一些代码。在倒数计时器中,处理程序用于以一秒的间隔调整代码。

于 2013-10-14T18:02:59.070 回答