Je convertis mon code de l'utilisation Handler
en AsyncTask
. Ce dernier est excellent dans ce qu'il fait - les mises à jour asynchrones et la gestion des résultats dans le thread principal de l'interface utilisateur. Ce qui ne me semble pas clair, c'est comment gérer les exceptions si quelque chose se détraque AsyncTask#doInBackground
.
La façon dont je le fais est d'avoir un gestionnaire d'erreur et de lui envoyer des messages. Cela fonctionne bien, mais est-ce la «bonne» approche ou y a-t-il une meilleure alternative?
Je comprends également que si je définis le gestionnaire d'erreurs en tant que champ d'activité, il doit s'exécuter dans le thread d'interface utilisateur. Cependant, parfois (de manière très imprévisible) j'obtiendrai une exception indiquant que le code déclenché à partir de Handler#handleMessage
s'exécute sur le mauvais thread. Dois-je initialiser le gestionnaire d'erreurs à la Activity#onCreate
place? Le placement runOnUiThread
dans Handler#handleMessage
semble redondant mais il s'exécute de manière très fiable.