1

我参与了为 android 开发一个测验应用程序。每个问题集合都应在指定的时间内回答。这段时间可以使用 android CountDownTimer 来测量。

但是,当应用程序不再处于焦点时,CountDownTimer 会暂停。如果我想定时器继续运行,即使应用程序关闭,我应该怎么做?(如果应用程序重新打开并且计时器已过期,应用程序应显示适当的消息)。

4

3 回答 3

2

使用 Activity 的生命周期 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

覆盖OnPause()方法(在活动失去焦点时调用)

  • 停止计时器
  • 存储当前时间

覆盖OnResume()方法(当活动在前台返回时调用)

  • 计算经过的延迟
  • 如果计时器已过期:显示消息
  • 否则用剩余的秒数重新启动倒数计时器
于 2013-08-08T16:55:25.483 回答
1

只需列出可以实施的可能方式(最好是第一个):

  1. user2553764的答案只是保存和计算基于系统的计时器值。(最适合,它很简单,不需要后台服务或线程)。

  2. 使用处理程序,请参阅如何在 android 中设置计时器。(官方文档建议它用于定时操作,尽管对于您的用例来说似乎有点过分)。

  3. 使用服务(bindservice),在后台使用服务实现倒计时。(但服务可能会出现内存不足,在这种情况下可能必须使用第一种方法)。

  4. AlarmManager,不知道它是否应该在绑定服务之下,但它仍然可以使用。 如何每 X 秒运行一次方法,建议使用 AlarmManager 超过 10 分钟的间隔,否则为处理程序。(如上所述,在android文档中也提到过)。

于 2013-08-08T18:02:41.543 回答
0

您想使用 AlarmManager 创建警报。无论屏幕上有什么活动,它们都会运行,甚至在手机睡着时运行。

于 2013-08-08T16:42:45.470 回答