【问题标题】:How to properly implement timers in Android?如何在 Android 中正确实现定时器?
【发布时间】:2017-02-12 14:09:35
【问题描述】:

我正在尝试制作一个简单的应用程序来跟踪工作时间。 MainActivity 具有一个表示计时器的 TextView 和四个按钮,用于启动、暂停、恢复和停止。

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

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

此外,确保在计时器达到 0 后触发通知(例如振动)的最佳方法是什么?到那时,该应用程序可能会在后台运行或被销毁。

【问题讨论】:

    标签: java android timer


    【解决方案1】:

    如果我对您的理解正确,您想要一个可以在后台工作的计时器,为此您应该扩展服务类。有一个与您的问题类似的已回答问题。您可以查看Android count down timer in background

    【讨论】:

    • 谢谢,将两个 Timer 类重构为一个,将其扩展为服务并调用 startForeground();做了我想要的
    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2019-07-05
    相关资源
    最近更新 更多