好吧所以我有一个警报管理器,我必须每三天关闭一次,当它关闭时,我将当前的系统时间写入共享首选项,这样如果手机关闭,我就会在最后一次被解雇时。< / p>
我的问题是如何计算手机关机后最后一次解雇的3天,因为我只能在共享首选项被解雇时写入?
我在想这样的事情
long refresh = lastTime + (360000*24)*3;
其中lastTime是最后一次被解雇的时间,但是如果手机重新启动之间那么又不会再重启3天了,或者我认为这是错误的?
答案 0 :(得分:0)
您缺少零(一天有86400000毫秒),但除此之外您的方法看起来很好(假设lastTime
只是来自System.currentTimeMillis()
的存储值)。 AlarmManager
使用绝对时间作为触发时间。
如果手机已关闭超过3天,那么当您恢复闹钟时,手机将会过期并立即开机。需要注意的一件事是,如果你以这种方式恢复重复警报并且自上次触发后已经过了5天,那么当你使用过去的日期恢复它时它会立即触发(过期的第3天警报)和再过一天后再次开火(第6天报警)。你可能想调整一下。