Je ne suis pas sûr, mais selon mes connaissances, je partage mon point de vue. J'ai toujours accepter meilleure réponse si je me trompe .
Alarm Manager
L'Alarme Manager est titulaire d'un PROCESSEUR wake lock tant que l'alarme du récepteur onReceive()
méthode est en cours d'exécution. Cela garantit que le téléphone ne sera pas dormir jusqu'à ce que vous avez fini de traiter la diffusion. Une fois onReceive()
rendements, l'Alarme Gestionnaire de versions, ce réveil de verrouillage. Cela signifie que le téléphone, dans certains cas, le sommeil dès que votre onReceive()
méthode est terminée. Si votre récepteur d'alarme appelés Context.startService()
, il est possible que le téléphone de sommeil avant le service demandé est lancé. Pour éviter cela, votre BroadcastReceiver
et Service
devrez mettre en place un distinct sillage de verrouillage de la politique pour s'assurer que le téléphone continue de fonctionner jusqu'à ce que le service devient disponible.
Remarque: L'Alarme Manager est prévu pour les cas où vous voulez avoir votre demande de code à exécuter à un moment précis, même si votre application n'est pas en cours d'exécution. Pour le calendrier normal de l'exploitation (les tiques, les délais, etc...) il est plus facile et beaucoup plus efficace d'utiliser le Gestionnaire.
Minuterie
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
synchronized public void run() {
\\ here your todo;
}
}}, 60000, 60000);
Timer
a quelques inconvénients qui sont résolus par la ScheduledThreadPoolExecutor
. Il n'est donc pas le meilleur choix
ScheduledThreadPoolExecutor.
Vous pouvez utiliser java.util.Timer
ou ScheduledThreadPoolExecutor
(de préférence) pour planifier une action à intervalles réguliers sur un thread d'arrière-plan.
Voici un exemple de l'utilisation de ces derniers:
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate
(new Runnable() {
public void run() {
// call service
}
}, 0, 10, TimeUnit.MINUTES);
J'ai donc préféré ScheduledExecutorService
Mais Aussi de penser que, si les mises à jour se feront pendant que votre application est en cours d'exécution, vous pouvez utiliser un Timer
, comme il est suggéré dans d'autres réponses, ou les plus récentes ScheduledThreadPoolExecutor
.
Si votre application sera mise à jour, même quand il n'est pas en cours d'exécution, vous devriez aller avec l' AlarmManager
.
L'Alarme Manager est prévu pour les cas où vous voulez avoir votre demande de code à exécuter à un moment précis, même si votre application n'est pas en cours d'exécution.
Prendre note que si vous envisagez sur la mise à jour lorsque votre application est désactivée, une fois tous les dix minutes est assez fréquent, et donc peut-être un peu trop gourmands en énergie.