You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
因为前段时间,也做了个闹钟的功能,也遇到了这些问题,也是这样搞定的。
如果用户,修改了系统的时间,如果我们设置之前就设置一个时间,那么就会触发这个过期闹钟任务。
我的解决方案如下:
在我们触发的Receive中,加一个时间差的比较:
代码如下:
private final static int STALE_WINDOW = 60;//60秒
long now = System.currentTimeMillis();
if (intent.hasExtra("time")) {
long sendTime = intent.getLongExtra("time", -1);//闹钟触发的时间
if (now > sendTime + STALE_WINDOW * 1000) {
return;
}
因为前段时间,也做了个闹钟的功能,也遇到了这些问题,也是这样搞定的。
如果用户,修改了系统的时间,如果我们设置之前就设置一个时间,那么就会触发这个过期闹钟任务。
我的解决方案如下:
在我们触发的Receive中,加一个时间差的比较:
代码如下:
private final static int STALE_WINDOW = 60;//60秒
long now = System.currentTimeMillis();
if (intent.hasExtra("time")) {
long sendTime = intent.getLongExtra("time", -1);//闹钟触发的时间
if (now > sendTime + STALE_WINDOW * 1000) {
return;
}
还有一个是如果用户修改系统的时间,我们应试在清单中注册一下几个广播,得新设置一个闹钟。
"ANDROID.INTENT.ACTION.BOOT_COMPLETED"
"android.intent.action.TIME_SET"
"ANDROID.INTENT.ACTION.TIME_TICK"
"ANDROID.INTENT.ACTION.TIMEZONE_CHANGED"
The text was updated successfully, but these errors were encountered: