简单计时器应用的架构

时间:2013-07-09 13:23:06

标签: java android timer

我目前正在制作一个非常简单的倒数计时器应用程序。我需要一些关于计时器的正确架构的建议,它既可以在应用程序关闭时触发,也可以在应用程序打开时显示进度。

到目前为止我所拥有的是一个简单的Handler,它每100毫秒执行一次Runnable来更新进度条并再次调用处理程序

// ...
// start the timer

tickHandler.postDelayed(runnable, 100);
// ...

private Handler tickHandler = new Handler();

private Runnable runnable = new Runnable(){
    @Override
    public void run() {
        if(tick()){
            tickHandler.postDelayed(this, 100);
        }
    }
};

现在我希望即使关闭应用程序也可以让Timer运行。我首先考虑了一个Service但后来发现了AlarmManager类接缝来完成工作并且更容易使用。但是,我不仅希望能够向通知中心发布通知,还希望再次打开应用程序并显示计时器已完成。

可以使用AlarmManager完成此操作还是需要实现Service?对于从Activity传递到Service并且更重要的是再次返回的控件在何处,此应用程序的体系结构将如何?

感谢任何提示!

1 个答案:

答案 0 :(得分:1)

我猜,AlarmManager完全符合您的要求:

取自Android AlarmManager

  

警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。

因此,您可以注册要在Timer完成后启动的Intent,并向用户显示Timer已停止。因此,AlarmManager应该可以做到这一点!

顺便说一句:使用服务也可能有效但会带来其他影响。例如,您的应用程序必须在启动阶段启动,这将禁止它安装在外部存储上。见Android Install Locations