Ich habe seit Tagen mit diesem Problem zu kämpfen. Ich habe auch die Dokumentation und einige Themen überprüft, aber keine Lösung / Erklärung gefunden.
Ich teste meine Anwendung auf LG p500, aber ich habe ein paar Tests mit Droid gemacht und ich bekomme das gleiche Ergebnis.
Meine Anwendung verwendet AlarmHandler, um einen Alarm zu planen. Die Anwendung funktioniert auf dem Emulator und auf dem Gerät ordnungsgemäß, bis das Gerät über genügend freien Speicher verfügt. Wenn ich mehrere andere Anwendungen auf dem Gerät starte und der Speicher niedrig ist, wird der Alarm nicht mehr ausgelöst. Sobald ich die "andere" Anwendung stoppe, funktioniert der Alarm wieder gut.
Lassen Sie mich den Test und das Ergebnis melden.
Ich habe diesen Test mehrere Male gemacht und ich bekomme das gleiche Ergebnis.
Dann habe ich versucht, einen Alarm mit der "Catch" -Anwendung zu setzen, die ich zuvor vom Markt heruntergeladen habe, und ich bekomme das gleiche Verhalten, so dass es aussieht, als wäre das kein Problem meiner Anwendung.
Wenn ich mir das Logbuch meiner Anwendung anschaue, sehe ich keinen Fehler / Ausnahme, aber es sieht so aus, dass wenn das System zu wenig Speicher hat, etwas passiert und der Broadcast-Empfänger nicht startet, bis das Telefon über die Tastatur aktiviert wird. Sobald ich das Telefon wecke, startet der Empfänger und alle Benachrichtigungen passieren.
Hier der Code, den ich benutzt habe:
Der Empfänger:
%Vor%Der Dienst
%Vor%Ein Stück Code von AlarmHandler, die aufgerufene Routine, um den Alarm zu planen:
%Vor%Und schließlich ist dies ein Stück Manifest-Datei:
%Vor%Sind Sie sicher, dass Ihr Prozess nicht beendet wird, wenn Sie alle diese Anwendungen starten? Wenn dies der Fall ist, werden die Alarme, die Sie eingestellt haben, damit sterben. Es ist nicht genau klar, wer und wann den Alarm in Ihrem Code einplant, aber wenn es sich um den Dienst handelt, wird er schließlich neu gestartet, und Sie erhalten irgendwann einen Alarm (wenn Sie das Gerät aufwecken).
Eine einfache Möglichkeit zu überprüfen, welche Alarme an verschiedenen Punkten Ihres Tests registriert sind:
%Vor%Mein Code ist deinem auf einer Alarm-App sehr ähnlich, die ich regelmäßig geschrieben und benutzt habe. Ich konnte das von Ihnen beschriebene Problem nicht reproduzieren. Ich kann mein Telefon nicht in einen extrem niedrigen Speicherzustand versetzen. Ich habe jede App, die ich installiert habe, geöffnet und habe noch 260M auf meinem HTC Rezound.
Als Schutzmaßnahme in meiner App habe ich alarmmanager.setRepeating () anstelle von .set () verwendet. Ich setze das Wiederholungsintervall auf 20 Sekunden. Ich habe die Alarm-ID als Vorsatz extra weitergegeben, genau wie du es getan hast. Wenn mein Dienst startet, bricht er sofort die ausstehende Absicht mit der Alarm-ID ab. Meine Logik hier ist, dass, wenn aus irgendeinem Grund mein Alarm fehlschlägt, wird es versuchen, alle 20 Sekunden zu versuchen, bis es erfolgreich ist.
Tags und Links android alarmmanager