我正在使用 AlramManager 使用以下方法设置警报:
public static void scheduleAlarmReceiverOnce(Context context,String did,long time) {
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent =PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReciever.class),PendingIntent.FLAG_CANCEL_CURRENT);
alarmMgr.set(AlarmManager.RTC_WAKEUP,time, pendingIntent);
}
我在这里打电话
Utils.scheduleAlarmReceiverOnce(this, did,Calendar.getInstance().getTimeInMillis()+30000);
它的工作正常意味着警报在我的广播中准确地出现在我显示的吐司显示准确时间为 30 秒的地方。我的问题是,当我重新启动或重新启动时,我正在计算并减去浪费的时间并再次安排警报,但剩下的时间......在我的启动接收器上,我再次启动我的服务,其中警报被重新安排。
Utils.scheduleAlarmReceiverOnce(this, did,Calendar.getInstance().getTimeInMillis()+leftime);
Whwre lefttime 我得到了正确的..正好在 17000 或 20000 左右,即;大约 20 秒但我的警报立即触发,无需等待 20 秒。
帮助请.. 提前致谢