2016-06-22 24 views
0

Ok, wie es in AlarmManager.set ist:Android, wie man nicht vorherigen Alarm abzubrechen, während Einstellung neue

Wenn bereits ein Alarm für das gleiche IntentSender geplant ist, dass frühere Alarm wird erst aufgehoben werden.

Wie kann ich dieses Standardverhalten ändern?
Ich muss Alarme nur einmal planen. Wenn neue Alarme geplant werden (mit dem gleichen PengingIntent), muss ich sie ignorieren.

Also muss ich den neuen Alarm abgebrochen werden, aber vorher gültig sein.

Antwort

1

Ok, hab es.

Ich habe PendingIntent ohne FLAG Option erstellt.
Dann habe ich Methode:

private boolean isPresent() { 
    return PendingIntent.getService(context, 0, myIntent, PendingIntent.FLAG_NO_CREATE) != null; 
} 

Wenn ich versuche zu setzen neue Alarm - ich zuerst überprüfen - das ist PendingIntent vorhanden.
Und wenn Alarm feuert - ich annulliere myPendingIntent manuell durch Aufruf cancel().

Das funktioniert gut, wie ich wollte.

1

Ich kenne keinen richtigen Weg, dies zu tun.

Eine Lösung wäre, zu wissen, ob die ausstehende Absicht von AlarmManager bereits vor dem Senden geplant wurde.

Speichern Sie einen Zeitstempel, der das Datum der Absicht mit SharedPreference beschreibt. Überprüfen Sie, ob der Zeitstempel übergeben wurde, bevor Sie einen anderen PendingIntent an AlarmManager senden.

+0

Yeap, scheint es ist der einzige Weg, es zu tun. Aber ich werde versuchen, eine bessere Lösung zu finden, wenn sie existiert. –