Wir haben eine App, die eine Aufgabe alle 10
Sekunden verarbeiten sollte. Dies sollte mehr oder weniger genau sein, was bedeutet, dass ein Unterschied von 1
oder 2
Sekunden OK
ist, aber keine Lücken von 20
Sekunden oder mehr.Android: Aufgabe alle 10 Sekunden (genau)
Dies sollte unabhängig davon funktionieren, ob die App im Vordergrund oder im Hintergrund geöffnet ist.
Wir implementieren dies über AlarmManager
, aber es funktioniert nicht richtig. Wenn das Smartphone nicht angeschlossen ist und im Hintergrund läuft, gibt es Lücken in der Ausführung.
Mit Android 4.3.
, haben wir Lücken (etwa 30 Sekunden) von Zeit zu Zeit, mit Android 5.x
wir weniger Lücken, aber Lücken über 5
oder 10
Minuten lang!
Ich denke es muss einen Weg geben, dies zu implementieren, ein Wecker ist auch möglich und ist genau.
Mehr über die App: Es funktioniert in einem Dienst und ein Rundfunkempfänger ist implementiert. Dies bedeutet, dass der Dienst neu gestartet wird, wenn ich die App lösche oder das Handy neu starte. Dies funktioniert korrekt. Das einzige Problem ist die zweite Aufgabe 10
.
Irgendwelche Hinweise? Wie wird ein Wecker implementiert? Welche Anrufe, API?
Ich habe verschiedene Möglichkeiten bisher ohne Erfolg versucht.
Dank Hans
, dass eine eher vage und unvollständige Antwort ist. –
Hallo. Ich versuche es mit dem AlarmManager. Das funktioniert, mein Tast wird alle 10 Sekunden aufgerufen. Aber nach einer Weile ist es nicht für 5 oder 10 Minuten aufgerufen! Dies tritt auf, nachdem die App für mehrere Minuten oder Stunden ausgeführt wurde und jede Stunde (mehr oder weniger) auftritt. Ich habe keine Idee warum. – Hans
Gut zu hören, dass es für dich funktioniert hat. Ich verstehe dein aktuelles Problem. Dies geschieht normalerweise, weil der Kundendienst aufgrund von Ressourcenmangel oder aus einem anderen Grund gestoppt werden kann. Um es für jedes Mal laufen zu lassen, müssen Sie sich auch für andere Broadcast-Empfänger registrieren. Zum Beispiel müssen Sie sich nach dem Ausführen von wake_up-Berechtigungen für Wake_up registrieren. Sobald der Benutzer das Telefon benutzt, wird der Broadcast-Empfänger angerufen, und Sie können überprüfen, ob der gewünschte Dienst läuft oder nicht. Wenn nicht, starte den Service. Sie können sogar sharedprefs verwenden, um Werte des letzten Dienstes namens toast zu speichern. –