Nie Verwenden Sie FLAG_CANCEL_CURRENT mit PendingIntents, die Sie beim Einstellen von Alarmen verwenden. Wenn Sie den Alarm für eine andere Zeit neu planen möchten, benötigen Sie überhaupt keine Markierung. Erstellen Sie einfach ein Duplicate PendingIntent mit Flags von Null und verwenden Sie es dann, um() einen Alarm zu setzen: Dies wird den bestehenden Alarm implizit löschen und ihn dann für die neu spezifizierte Zeit setzen. Wenn Sie jedoch FLAG_CANCEL_CURRENT beim Erstellen des neuen PendingIntents verwendet haben, wird die Fähigkeit des Alarm-Managers unterbrochen, zu erkennen, dass er "derselbe" ist wie der jetzt abgebrochene PendingIntent, und dass der alte nicht verfügbar ist und Speicher belegt und CPU. Ich habe gesehen, dass Apps mit diesem Fehler im System buchstäblich Hunderte von abgestandenen Alarmen ausgelöst haben, genug, um eine spürbare Leistung und Speicherauslastung zu erzielen.
Wenn Sie nur die Extras ändern möchten, ohne den vorhandenen Alarm neu zu terminieren, dafür ist FLAG_UPDATE_CURRENT zuständig. Wenn Sie eine neue Planung durchführen möchten, verwenden Sie überhaupt keine Flags.
Was bedeutet "Es gibt nicht viele Extras"? Verwenden Sie Extras oder nicht? –
nein, ich verwende keine Extras .. – Dory
Seien Sie gewarnt, dass Samsung Lollipop Problem hat, wenn man FLAG_CANCEL_CURRENT verwendet. Bezieht sich auf http://stackoverflow.com/questions/29344971/java-lang-securityexception-too-many-alarms-500-registered-from-pid-10790-u – Elye