TimerTask vs Thread.sommeil vs Gestionnaire postDelayed - plus précise de la fonction d'appel de toutes les N millisecondes?
Quel est le moyen le plus précis pour appeler une fonction toutes les N millisecondes?
- Fil avec Fil.sommeil
- TimerTask
- Gestionnaire avec postDelayed
J'ai modifié cet exemple à l'aide de Fil.le sommeil et c'est pas très précis.
Je suis le développement d'une application de musique qui va jouer les sons en un point donné de la BPM. Je comprends que c'est impossible de créer une précision de métronome et je n'ai pas besoin à trouver la meilleure façon de le faire.
Grâce
- J'ai préféré la Minuterie pour atteindre cet
- Ne pas utiliser la Minuterie (mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler), l'utilisation du Gestionnaire ou du ScheduledThreadPoolExecutor.
Vous devez vous connecter pour publier un commentaire.
Il ya quelques inconvénients de l'utilisation de la Minuterie
prend trop de temps à exécuter d'autres tâches de souffrir.
les exceptions levées par les tâches et l'enfiler juste se termine, ce qui affecte
d'autres tâches planifiées et ils ne sont jamais fonctionner
ScheduledThreadPoolExecutor traite correctement à toutes ces questions et il n'est pas logique d'utiliser une Minuterie.. Il y a deux méthodes qui pourraient être utiles dans votre cas.. scheduleAtFixedRate(...) et scheduleWithFixedDelay(..)
Sur Android, vous pouvez créer de Thread avec son propre Gestionnaire/Message de la File d'attente. C'est tout à fait exact. Quand vous voyez Gestionnaire la documentation vous pouvez le voir, qu'il a été conçu pour cela.
Ils sont tous de la même précision d'une montre. Java précision de la synchronisation est soumis à la précision et l'exactitude du système de minuteries et des planificateurs et n'est pas garanti. Voir Le Fil De Discussion.du sommeil et de l'Objet.attendre API.
À l'aide de TimerTask pour la boucle de l'action est la meilleure. Recommander