在确切的时间和每24小时发送通知

时间:2016-02-27 22:44:40

标签: android notifications alarmmanager

这是我的代码。我认为这种方法是正确的,但我无法在确切的时间显示通知。总是有几分钟的延迟。

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);
}

1 个答案:

答案 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的应用程序将   继续发出所有警报,包括重复警报,   确切地对待。