【问题标题】:Why does CountDown Timer in Android use a Handler?为什么 Android 中的 CountDown Timer 使用 Handler?
【发布时间】:2013-10-14 17:55:16
【问题描述】:

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

【问题讨论】:

    标签: java android countdowntimer


    【解决方案1】:

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

    没错。但是,“一般”!=“总是”。

    碰巧Handler 具有用于计时目的的有用方法,例如postDelayed()sendMessageDelayed()CountDownTimer 可以利用这些方法。您也可以自己使用它们。它们既美观又轻巧,因为正如您所指出的,我们不需要像 TimerTimerTask 这样的单独线程。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2015-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-30
          • 1970-01-01
          • 2019-01-05
          • 2021-07-30
          • 1970-01-01
          相关资源
          最近更新 更多