在我的Android应用程序中(android并不重要,任何客户端应用程序都类似)我定期运行服务。当一段时间过去(例如7天)并且用户没有达成目标时,我会发送通知。但是,如果用户将手机的时间更改为未来日期(这会产生误报),我会发送通知。但这是错误的。
long differenceMinutes =
Math.abs( (System.currentTimeMillis() / 1000L) - lastGoalTime) / 60;
好路径:
- 用户于2014年6月15日制定了目标,并将此日期保存到设备中
- 我的服务检查新目标
- 2014年6月22日,如果没有新目标没有完成,我会发送通知。
路径不好:
- 用户于2014年6月15日制定了目标,并将此日期保存到设备中
- 2014年6月16日,用户将当地时间更改为2014年6月22日
- 我的服务检查新目标
- 没有新的目标完成,虽然仅过了一天,申请发送通知
- 我不希望申请在7天内发送通知。
我怎样才能遇到这种情况? 我不喜欢连接时间服务器并获取当前时间 这类问题有解决办法吗? 如果我不知道这个术语,我很抱歉。
答案 0 :(得分:1)
可能的解决方法或甚至解决方案可能是检测到DATE_CHANGED事件&更新服务器?
扩展广播接收器,并将以下操作添加到intent过滤器,当然可以通过xml完成。
intentFilter.addAction("android.intent.action.DATE_CHANGED");