2010-09-12 36 views
11

Je souhaite que mon application accède à la base de données toutes les heures et qu'elle lise l'enregistrement suivant de la table, puis mette à jour le widget desctop et envoie une notification. Je sais qu'il y a AlarmManager que je peux utiliser pour enregistrer mes intentions, mais elles sont supprimées lorsque le téléphone est éteint ou redémarré.Comment programmer mon application Android pour faire quelque chose toutes les heures

Existe-t-il d'autres classes/services android pour lesquels je mettrais continuellement à jour mon application même lorsque je redémarrerais mon téléphone?

Merci,

Répondre

4

jeter un oeil sur les applications de démonstration fourni avec Android sdk

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

le regard sur AlarmService_Service pour la mise en oeuvre du service une fois que l'alarme a été déclenchée

+2

En ce qui concerne « mais ils sont supprimés lorsque le téléphone est éteint ou redémarré », vous devez implémenter un récepteur 'BOOT_COMPLETED' pour rétablir vos alarmes après un redémarrage. Si vous implémentez un widget d'application, vous avez également la possibilité d'utiliser 'android: updatePeriodMillis' dans les métadonnées de votre widget d'application - cette alarme est automatiquement gérée pour vous, mais elle n'est pas aussi flexible. – CommonsWare

+0

L'exemple ne semble plus disponible en ligne et n'est évidemment pas disponible avec les versions plus récentes du SDK. Cependant, un exemple similaire (peut-être même le même?) Peut être trouvé ici: https://code.google.com/p/android-lab/source/browse/trunk/android-lab/src/com/example/android /apis/app/AlarmService.java – peterp

1

Mettez toutes les tâches d'arrière-plan que vous voulez faire dans votre application dans Services qui effectuent des tâches en arrière-plan. Dans le service, vous devriez être en mesure de définir une minuterie qui provoque toutes les mises à jour que vous souhaitez avoir lieu toutes les x heures.

Dans le onCreate() du widget, démarrez le service. onCreate() est appelé chaque fois que le widget prend vie (par exemple, lorsque le téléphone démarre s'il est sur l'écran d'accueil) et garantit donc que le Service est toujours en cours d'exécution.

J'espère que cela vous a été utile.

+3

Avoir un service éternel est un billet à sens unique pour une note d'une étoile sur le marché. – CommonsWare

+1

non, je n'ai jamais dit un "service durable" était une bonne idée, mais @marqss a dit qu'il voulait un service qui était toujours en cours ... même après que le téléphone a été réinitialisé. – mtmurdock