Ich habe ein Widget, das, wenn es gedrückt wird, eine Sendung sendet, die einen CountDownTimer startet, der mein Widget aktualisiert und am Ende einen Alarm abspielt. Das funktioniert wunderbar im Emulator.Wie kann ich sicherstellen, dass ein CountDownTimer aktiviert und abgeschlossen wird?
Auf meinem Handy ist es jedoch eine andere Geschichte. Mein Telefon ist so eingeschränkt, dass mein Prozess regelmäßig beendet wird, was natürlich bedeutet, dass der CountDownTimer mein Widget nicht mehr aktualisiert.
Es scheint, dass der einzige Weg, um in Zukunft zuverlässig Dinge zu tun, der AlarmManager ist, da dies einen Alarm auf Systemebene setzt. Die Dokumentation besagt jedoch, und ich stimme zu, dass Sie es nicht für Ticks verwenden sollen. Da jedoch alles andere, was Sie wahrscheinlich verwenden, die Möglichkeit hat, willkürlich heruntergefahren zu werden, geben Sie uns nicht wirklich viel Auswahl.
Meine Frage ist: Gibt es eine Möglichkeit, sicherzustellen, dass ein CountDownTimer tickt und schließlich onFinish() aufruft, oder muss ich es einfach fallen lassen und zu AlarmManager wechseln, und "missbrauche" es? Alle anderen Möglichkeiten, um sicherzustellen, dass das Ding funktioniert und endet, sind ebenfalls willkommen.
Ich sollte hinzufügen, dass ich nicht auf das Betriebssystem OnUpdate() aufrufen kann, sowohl weil es nicht schneller als alle 30 Minuten tun wird, und auch weil das Widget die meiste Zeit nichts tut. Nur wenn es angeklickt wird, tickt es jede Sekunde für eine Handvoll Minuten.
Was würde dies erreichen? –
Dienste können jedoch trotzdem beendet werden. Außerdem ist die Sache, die den CountDownTimer hat, keine Aktivität, es ist ein BroadcastReceiver, aber vielleicht ist das egal. Wir würden den Service grundsätzlich als Anker nutzen. Ich weiß, was passieren würde. Die Kunden würden sich immer noch beschweren, dass der Countdown manchmal nicht funktioniert ... –
Eigentlich könnte ein Service, der damit verbunden ist, das Ticket sein: http://stackoverflow.com/questions/3856767/android-keeping-a-background-service-alive-preventing-process-death –