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