Java 简单计时器应用程序的体系结构
我目前正在开发一个非常简单的倒计时应用程序。我需要一些关于计时器的正确架构的建议,它既可以在应用程序关闭时启动,也可以在应用程序打开时显示进度 到目前为止,我所拥有的是一个简单的Java 简单计时器应用程序的体系结构,java,android,timer,Java,Android,Timer,我目前正在开发一个非常简单的倒计时应用程序。我需要一些关于计时器的正确架构的建议,它既可以在应用程序关闭时启动,也可以在应用程序打开时显示进度 到目前为止,我所拥有的是一个简单的处理程序,它每100毫秒执行一次Runnable,以更新进度条并像这样再次调用处理程序 // ... // start the timer tickHandler.postDelayed(runnable, 100); // ... private Handler tickHandler = new 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);
}
}
};
现在我想让计时器
即使在应用程序关闭时也能运行。我首先想到了一个服务
,但后来发现了AlarmManager
类,它可以完成这项工作,而且更易于使用。然而,我不仅希望能够发布通知到通知中心,而且希望应用程序再次打开,并显示计时器已经完成
这可以通过AlarmManager
完成,还是需要实施服务
?该应用程序的体系结构看起来如何,从活动
到服务
的控制传递到哪里,更重要的是,从哪里返回
谢谢你的提示 我想,AlarmManager正是您想要的: 取自 Alarm Manager适用于希望在特定时间运行应用程序代码的情况,即使应用程序当前未运行 因此,您可以注册意图,您希望在计时器完成后启动该意图,并向用户显示计时器已停止。因此,AlarmManager应该做到这一点
顺便说一句:使用服务也可能有效,但会带来其他影响。例如,您的应用程序必须在启动阶段启动,这将使其无法安装在外部存储上。请参见这两种方法都可以正常工作(不过,如果您使用AlarmManager,当您的活动可见时,您仍然需要跟踪计时器的可视表示时间)。只需选择您认为最容易理解和实施的方法。并阅读活动生命周期。在理解活动生命周期的最初阶段,您会犯一些错误(但这是完全正常的,生命周期一开始根本不是直观的,使用像您这样的示例来完成它是最好的学习方式)是的,我想我会使用AlarmManager和我已经在工作的处理程序来跟踪应用程序打开的时间。我将更详细地研究活动生命周期,以使其正确。谢谢因此,我将尝试使用AlarmManager。谢谢,我会记住服务的含义!