android:测验应用的计时器

android:测验应用的计时器,android,background-process,countdown,Android,Background Process,Countdown,我参与了为android开发一个测验应用程序。每一组问题都应在规定的时间内回答。这段时间可以使用android倒计时来测量 但是,当应用程序不再聚焦时,倒计时暂停。 如果我想让计时器继续运行,即使应用程序已关闭,我该怎么办?(如果应用程序重新打开且计时器已过期,则应用程序应显示适当的消息) 您想使用AlarmManager创建报警。无论屏幕上有什么活动,它们都会运行,甚至在手机处于睡眠状态时也会运行。使用活动的生命周期 重写OnPause()方法(当活动失去焦点时调用) 停止计时 存储当前时

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

但是,当应用程序不再聚焦时,倒计时暂停。
如果我想让计时器继续运行,即使应用程序已关闭,我该怎么办?(如果应用程序重新打开且计时器已过期,则应用程序应显示适当的消息)

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

使用活动的生命周期

重写OnPause()方法(当活动失去焦点时调用)

  • 停止计时
  • 存储当前时间
重写OnResume()方法(当活动返回前台时调用)

  • 计算经过的延迟
  • 如果计时器已过期:显示消息
  • 否则,用剩余的秒数重新启动倒计时

只是列出了可能的实现方法(最好的一个优先):

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

  • 使用处理程序,请参阅。(建议将其用于定时操作,但对于您的用例来说似乎有些过分)

  • 使用服务(bindservice)。(但服务可能会耗尽内存,在这种情况下,可能必须在第一种方法中使用它)

  • AlarmManager,不知道它是否应该低于绑定服务,但它仍然可以使用。 ,建议每隔10分钟以上使用AlarmManager。(如上所述,android文档中也提到了这一点)


  • 文档似乎建议使用处理程序:注意:Alarm Manager适用于希望在特定时间运行应用程序代码的情况,即使应用程序当前未运行。对于正常的计时操作(滴答声、超时等),使用处理程序更容易、更高效。为什么AlarmManager更好?谢谢。我想我先试试这个方法。。使用“Bundle”存储当前时间是不够的,因为当应用程序被终止时,Bundle也会丢失。我应该使用什么方法来存储当前时间?是的,必须使用OnPause()方法将捆绑包数据存储在特定文件或应用程序首选项中,然后读取OnResume()上的数据