Android:应用关闭时保持计时器正常运行

时间:2016-07-27 17:37:34

标签: java android timer

我的应用需要每24小时更新一次数据。如果用户过期,用户应该无法访问该应用的某些部分。

当应用启动时,我会检查数据库是否过期。但是,用户可能会长时间在后台打开应用程序,我需要在需要更新时提醒他们。

最好的方法是什么?我的初步想法是使用某种Handler线程并在每次应用暂停时在某处保存时间戳,然后计算新时间并在resumer上重新启动计时器。

这留下了两个问题:

  • 无论活动如何,我的应用程序暂停或恢复时如何检测?
  • Android中长时间运行计时器的最佳成语是什么? (保持在中间,它必须能够修改UI组件,即在他的时间到了时显示警报)

2 个答案:

答案 0 :(得分:0)

你可以这样做,但你不应该在应用程序关闭时将时间戳存储在共享首选项中,再次打开时再次读取该值并通过获取实际时间戳 ....然后在必要时更新已经失效的时间!

timeStamp只是一个很长的值..

你可以通过调用System.currentTimeMillis()

来获取它

对于共享首选项,请使用班级SharedPreferences

答案 1 :(得分:0)

您可以让服务每24小时为您执行一次查询,并在用户失败时通知用户。您可以使用AlarmManager。例如:

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent m_intent = new Intent(this, YourService.class);
PendingIntent pi = PendingIntent.getService(this, 2, m_intent, 0);
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 24 * 60 * 60, pi);

然后,服务可以要求AlrmManager在24小时后再次使用上述代码自行调用。

注意:系统或用户可以取消警报(强制停止)。所以,这个解决方案附带了它的警告。