In meinem Projekt habe ich eine Anforderung, eine Aufgabe zu planen, um Benachrichtigungen zu einem bestimmten Zeitpunkt jeden Tag anzuzeigen. Wenn ich es heute einige Zeit setze, wird es ausgelöst und alles läuft wie erwartet, aber wenn die geplante Zeit morgen ist, wird sie nicht ausgelöst. Unten ist mein Code, um den Alarmmanager einzustellen.Alarmmanager löst nicht jeden Tag aus
public void setMorningRepeatingTask(Context context, int hour, int minutes) {
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmBroadcastReceiver.class);
intent.setAction(Constants.ALARM_MANAGER_INTENT_MORNING_UNIQUE_ACTION);
alarmIntent = PendingIntent.getBroadcast(context, Constants.MORNING_ALARM_UNIQUE_ID, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minutes);
if(checkIfTheTimeHasPassed(calendar.getTimeInMillis())){
calendar.add(Calendar.DATE, 1);
}
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
FileLogger.writeToFile("Alarm Set", "Morning repeating Alarm Set");
}
public static boolean checkIfTheTimeHasPassed(long timeInMillis) {
long nowTime = new Date().getTime();
return nowTime > timeInMillis;
}
Bitte helfen.
'AlarmManager' kann nicht in Szenarien mit Zwangshalt und Telefonneustart bestehen. Sind Sie sicher, dass Sie nicht in beide Kategorien fallen? – Shaishav
Was ist Ihre Android-Version? und Sie können dieses Thema http://stackoverflow.com/questions/38742368/alarmmanager-cant-work-on-android-6-0 – sonnv1368
Ich handle Telefon Neustart Szenario. Wenn ich die Nachricht Boot complete (android.intent.action.BOOT_COMPLETED) empfange, verschiebe ich die Alarme neu. Aber Kraft aufhören, ich habe nicht behandelt. Wie kann ich damit umgehen? Sind Sie sicher, dass der einmal eingestellte Alarm nicht im Hintergrund läuft, obwohl die App geschlossen ist? –