AlarmManager - comment répéter une alarme Toutes les heures?

je veux qu'un événement tire toutes les heures (à 5:00, 6:00, 7:00, etc...). J'ai essayé avec un service de fond persistant avec un thread mais ce n'était pas la bonne solution à cause de:

  • consommation de la batterie
  • fin du service, en raison de gestion de la mémoire android

alors j'essaie avec AlarmManager. Cela fonctionne si je mets une alarme à feu en X secondes (en utilisant la méthode "set"). Mais comment puis-je répéter un événement (en utilisant la méthode "setRepeating") en haut de toutes les heures, jusqu'à ce que l'alarme est annulée?

Merci!

9
demandé sur daliz 2010-06-27 16:40:14

1 réponses

quand vous définissez les alarmes vous avez deux fois: le premier temps de déclenchement, et le prochain intervalle de déclenchement.

vous devez ensuite calculer les millisecondes restantes au début de l'heure suivante, puis régler une heure pour l'intervalle de répétition.

// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += remainingMilisecondsToTopHour;
long a=c.getTimeInMillis();

// Schedule the alarm!
AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME,
c.getTimeInMillis(), 1*60*60*1000, sender);
15
répondu Pentium10 2010-06-27 13:09:39