这是我的代码。我认为这种方法是正确的,但我无法在确切的时间显示通知。总是有几分钟的延迟。
public void setSimpleAlarm() {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 10);
c.set(Calendar.MINUTE, 19);
c.set(Calendar.SECOND, 40);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
Intent intentAlarm = new Intent(getActivity(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 3, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
答案 0 :(得分:1)
嗯,您正在使用setInexactRepeating()
。顾名思义和[文档](https://developer.android.com/reference/android/app/AlarmManager.html#setInexactRepeating(int,long,long,android.app.PendingIntent))确认它是"重复警报,具有不准确的触发时间要求& #34;
[setRepeating()
](https://developer.android.com/reference/android/app/AlarmManager.html#setRepeating(int,long,long,android.app.PendingIntent)的文档包含答案:
注意:从API 19开始,所有重复警报都不准确。如果你的 应用程序需要精确的交付时间,然后必须使用一次性 确切的警报,每次重新安排,如上所述。遗产 targetSdkVersion早于API 19的应用程序将 继续发出所有警报,包括重复警报, 确切地对待。