我目前正在制作一个非常简单的倒数计时器应用程序。我需要一些关于计时器的正确架构的建议,它既可以在应用程序关闭时触发,也可以在应用程序打开时显示进度。
到目前为止我所拥有的是一个简单的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
并且更重要的是再次返回的控件在何处,此应用程序的体系结构将如何?
感谢任何提示!
答案 0 :(得分:1)
我猜,AlarmManager完全符合您的要求:
警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。
因此,您可以注册要在Timer完成后启动的Intent,并向用户显示Timer已停止。因此,AlarmManager应该可以做到这一点!
顺便说一句:使用服务也可能有效但会带来其他影响。例如,您的应用程序必须在启动阶段启动,这将禁止它安装在外部存储上。见Android Install Locations