很抱歉我的英语不好。目前我正在使用qr码扫描仪的项目中工作。我正面临这个bug。当应用程序扫描qr码时,它应该安排警报的重复。它工作得很好,但如果我给警报管理器例如3个警报。例如,现在是12:00,第一个是11:00,第二个是12:30,第三个是13:00。它们都不会触发。这就是我的测试代码。重复和计数器是从0开始的全局变量。也没有错误,我试着用打印每个结果来测试它,我真的没有看到逻辑错误。请帮忙,谢谢。所以,如果我不把这部分代码放进去,它是有效的。
if (System.currentTimeMillis() > cal.getTimeInMillis()){
TimeUntilTrigger = cal.getTimeInMillis() + 86400000;
}else{
TimeUntilTrigger = cal.getTimeInMillis();
}
这是我的完整测试代码。
AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
repetition+=3;
while (counter<repetition){
cal.set(Calendar.HOUR_OF_DAY,10);
cal.set(Calendar.MINUTE,55+counter*2);
timeDatabase.insertData(result.getContents(),String.valueOf(10),String.valueOf(55+counter*2));
long TimeUntilTrigger;
if (System.currentTimeMillis() > cal.getTimeInMillis()){
TimeUntilTrigger = cal.getTimeInMillis() + 86400000;
}else{
TimeUntilTrigger = cal.getTimeInMillis();
}
Intent alarmIntent = new Intent(getActivity(), AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getActivity(),counter,alarmIntent,0);
manager.setRepeating(AlarmManager.RTC_WAKEUP,TimeUntilTrigger,AlarmManager.INTERVAL_DAY,pendingIntent);
counter++;
}
我解决了这个问题。问题是您需要设置秒和毫秒。
cal.set(Calendar.HOUR_OF_DAY,13);
cal.set(Calendar.MINUTE,51+counter*2);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);