我的应用需要每24小时更新一次数据。如果用户过期,用户应该无法访问该应用的某些部分。
当应用启动时,我会检查数据库是否过期。但是,用户可能会长时间在后台打开应用程序,我需要在需要更新时提醒他们。
最好的方法是什么?我的初步想法是使用某种Handler线程并在每次应用暂停时在某处保存时间戳,然后计算新时间并在resumer上重新启动计时器。
这留下了两个问题:
答案 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小时后再次使用上述代码自行调用。
注意:系统或用户可以取消警报(强制停止)。所以,这个解决方案附带了它的警告。