2017-02-12 53 views
1

我正在尝试制作一个跟踪工作时间的简单应用程序。 MainActivity使用一个TextView来代表一个计时器和四个按钮,用于启动,暂停,恢复和停止。如何在Android中正确实现定时器?

到目前为止,我有两个类用于建模使用android.os.CountDownTimer;启动计时器的计时器TimerCountdown和TimerCountup(用于加班),更新TextView并触发系统通知以在用户完成后通知用户。 TimerCountdown每秒更新一次tView,8小时后会向用户发送一个通知,并启动TimerCountup来追踪另一个2小时的超时时间。

如果应用程序在后台,确保这些定时器继续运行的正确方法是什么?我必须将两个Timer类包装到一个Service中吗?如果是这样,我将如何做到这一点,因为他们持有对上下文的引用,这显然是不允许的?不幸的是,android.os.CountDownTimer;的文档没有提到应用程序进入后台时的行为。为了在应用程序被销毁后恢复进度,我最终可能会使用一个序列化对象,我只是不确定如何正确处理后台活动。

另外,确保通知(如振动)在定时器到达0后触发的最佳方法是什么?该应用可能会在当时处于背景中,或者被销毁。

回答

0

如果我理解正确你想要一个计时器,将在后台工作,要做到这一点,你应该扩展服务class.There是一个回答问题,这是类似yours.You可以检查出来Android count down timer in background

+0

谢谢,将两个Timer类重构为一个,将其扩展为一个服务并调用startForeground();做了我一直在寻找的东西 – KUSH42