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