Timertask ou Gestionnaire de
Disons que je veux effectuer une action toutes les 10 secondes et il n'a pas nécessairement besoin de mettre à jour la vue.
La question est: est-il mieux (je veux dire plus efficiente et plus efficace) pour utiliser la minuterie avec timertask comme ici:
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
<some task>
}
});
}
};
timer = new Timer();
timer.schedule(timertask, 0, 15000);
}
ou tout simplement un gestionnaire avec postdelayed
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
<some task>
}
};
handler.postDelayed(r, 15000);
Aussi je vous serais reconnaissant si vous pouviez expliquer lors de l'utilisation de l'approche et pourquoi l'un d'eux est plus efficace que l'autre (si elle ne l'est réellement).
- J'ai lu de nombreux messages sur les comportements irréguliers de TimerTasks. Mon conseil serait d'orienter clairement d'entre eux et d'utiliser le gestionnaire d' / postDelayed approche.
- Je préfère le Gestionnaire d'-postDelay de la méthode que vous avez plus de contrôle et de planifier à partir de l'intérieur
- Ici est une grande source pour Minuteur vs Handler
- TimerTask est un fond de tâche, de sorte que vous ne pouvez pas mettre à jour l'INTERFACE utilisateur. Juste pour dire...
Vous devez vous connecter pour publier un commentaire.
Handler
est mieux queTimerTask
.La Java
TimerTask
et AndroidHandler
les deux vous permettent de calendrier de retard et les tâches répétées sur les threads d'arrière-plan. Cependant, la littérature massivement recommande l'utilisation deHandler
surTimerTask
dans Android (voir ici, ici, ici, ici, ici, et ici).Certains des problèmes signalés avec TimerTask comprennent:
Exemple
La meilleure source pour tous les types de Android exemples que j'ai vu, est à Codepath. Voici une
Handler
exemple à partir de là, pour une répétition de la tâche.Liées
mHandler.removeCallbacks(runnableCode)
au moment approprié (par exempleonStop()
pour une activité).Copié à partir de:
TimerTask vs Thread.sommeil vs Gestionnaire postDelayed - plus précise de la fonction d'appel de toutes les N millisecondes?
Kotlin version de accepté de répondre: