Frage

In meinem Android App habe ich einige Daten, die Bedürfnisse täglich synchronisiert werden, sondern muss auch jede Stunde aktualisiert werden, wenn ein Benutzer in der App ist.

Ich habe implementiert bereits einen Dienst, der von einem Alarm für die tägliche Aktualisierung aufgerufen wird. Im ein Problem mit der Entwicklung einer Strategie die stündliche sync zu tun. Ich konnte eine stündliche Alarm verwenden zu und feuern die gleiche Absicht, aber da die App jederzeit getötet werden können, gäbe es keine Möglichkeit, um es aufzuheben (und da sie die gleiche Absicht verwenden, ein tun stornieren würde alle Alarme abbrechen einschließlich meiner tägliche Synchronisierung, so dass wahrscheinlich nicht gut).

Die andere Möglichkeit ist, einen Timer zu verwenden, der Satz ist, wenn in der App und haben die Feuer meine Absicht, wenn sie innerhalb der App. Im vorausgesetzt alle Zeiten erhalten gelöscht, wenn eine App direkt getötet wird? Aber meine App besteht aus mehreren Aktivitäten, und ich möchte den Timer auf Arbeit über alle Aktivitäten, wie kann ich das tun? Ich möchte nicht den Code duplizieren -. Wir bereits eine Unterklasse für Aktivität und ListActivity mit

War es hilfreich?

Lösung

ich einige Daten, die Bedürfnisse sein täglich synchronisiert, muss aber auch sein, jede Stunde aktualisiert, wenn ein Benutzer in der App.

Die Lösung scheint einfach: die zweite Anforderung fallen. Nur wenige Anwendungen werden kontinuierlich stundenlang verwendet, da die Menschen neigen dazu, ihre Android-Handys für andere Dinge zu verwenden (zB Handys), so dass Ihre Update-Stunden-if-used-all-die-Zeit-Code wird wahrscheinlich nie ausgeführt werden.

Ich konnte einen stündlichen Alarm verwenden zu und Feuer die gleiche Absicht, aber da Ihr App kann jederzeit getötet werden, da wäre keine Möglichkeit, es zu löschen

FWIW, Ihre App wird nicht getötet werden, während sie auf dem Bildschirm ist. Und während es nicht auf dem Bildschirm, Sie mögen nicht der Updates geht stündlich.

Im alle Zeiten unter der Annahme erhalten abgesagt wenn eine App getötet oder?

Apps werden in der Regel nicht "getötet". Wir erwarten, dass Sie sich selbst bereinigen, wenn Sie Ihre Aktivitäten mit onDestroy() aufgerufen werden. Wenn Sie den Timer mit einem Daemon-Thread eingerichtet, müssen Sie diesen Thread beenden.

Aber meine App besteht aus mehreren Aktivitäten und ich möchte den Timer zu Arbeit für alle Aktivitäten, wie kann ich das tun?

Binden Sie an Ihrem Service von jedem Ihrer Aktivitäten. Wenn sie von Ihrem Alarm Intent gestartet wird, hat es normal Aktualisierungsverarbeitung zu tun. Wenn es aufgrund einer verbindlichen Anfrage gestartet wird, muss es nur sicher, dass sein stündlicher Timer machen läuft. Wenn es mit onDestroy() genannt wird (zum Beispiel, nachdem alle Aktivitäten ungebundene haben), hat es die Timer zu stoppen.

Andere Tipps

Möglicherweise können Sie einen Timer läuft in einem Hintergrunddienst haben (die als Aktivitäten weniger getötet), aber es gibt immer noch keine Garantie, dass Android nicht Ihren Dienst entweder töten. Und so etwas wie dieses ausgeführt ist der Hintergrund viel Batterie verwenden können.

Was ist die stündliche Synchronisierung in einem Hintergrund-Thread zu tun, dass get in onResume erstellt wird? Und sparen Sie nur das letzte Mal, wenn der Benutzer die Synchronisierung hat, und wenn es war> eine Stunde nur die Synchronisierung durchführen. Weil ich glaube nicht, gibt es keinen Grund zu eifrig Sync-Daten, dass der Benutzer nie sehen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top