2010-09-12 15 views
11

Ich möchte meine App jede Stunde auf die Datenbank zugreifen und nächsten Datensatz aus der Tabelle lesen, dann desctop Widget aktualisieren und Benachrichtigung senden. Ich weiß, dass es AlarmManager gibt, mit dem ich meine Intents registrieren kann, aber sie werden gelöscht, wenn das Telefon ausgeschaltet oder neu gestartet wird.So planen Sie meine Android-App, um jede Stunde etwas zu tun

Gibt es eine andere Android-Klasse/Dienst, die ich meine Anwendung kontinuierlich aktualisieren würde, auch wenn ich mein Telefon neu starte?

Danke,

Antwort

4

werfen Sie einen Blick auf die Demo-Anwendungen mit Android SDK

http://developer.android.com/samples/RepeatingAlarm/index.html

der Blick auf AlarmService_Service für die Implementierung des Dienstes, sobald der Alarm

+2

Im Hinblick auf „aber sie gelöscht werden, wenn das Telefon ausgeschaltet oder neu gestartet wird gedreht wird“, benötigen Sie einen 'BOOT_COMPLETED' Empfänger implementieren Ihre Alarme nach einem Neustart wieder herzustellen. Wenn Sie ein App-Widget implementieren, haben Sie auch die Möglichkeit, "android: updatePeriodMillis" in den App-Widget-Metadaten zu verwenden. Dieser Alarm wird automatisch für Sie verwaltet, ist jedoch nicht so flexibel. – CommonsWare

+0

Das Beispiel scheint nicht mehr online verfügbar zu sein und ist offensichtlich auch nicht mit neueren SDK-Versionen verfügbar. Ein ähnliches (vielleicht sogar dasselbe) Beispiel finden Sie hier: https://code.google.com/p/android-lab/source/browse/trunk/android-lab/src/com/example/android /apis/app/AlarmService.java – peterp

1
ausgelöst wurde

Legen Sie alle Hintergrundaufgaben, die Sie in Ihrer App durchführen möchten, unter Services fest, die Aufgaben im Hintergrund ausführen. Im Dienst sollten Sie in der Lage sein, einen Zeitgeber zu definieren, der alle Aktualisierungen veranlasst, die Sie alle x Stunden durchführen möchten.

In der onCreate() des Widgets, starten Sie den Dienst. onCreate() wird jedes Mal aufgerufen, wenn das Widget zum Leben erweckt wird (z. B. wenn das Telefon startet, wenn es auf dem Startbildschirm ist) und garantiert daher, dass das Service immer ausgeführt wird.

Ich hoffe, das war hilfreich.

+3

Ein immerwährender Service ist ein One-Way-Ticket für eine Ein-Sterne-Bewertung auf dem Markt. – CommonsWare

+1

nein, ich sagte nie, dass ein "ewig dauernder Service" eine gute Idee war, aber @marqss sagte, er wollte einen Dienst, der immer lief ... sogar nachdem das Telefon zurückgesetzt wurde. – mtmurdock