0 votes

AsyncTask en OnCreate échoue à l'exécution, comment éviter cela dans Android?

J'ai une activité qui commence par un AsyncTask pour vérifier la connexion à l'API de mes serveurs. Puisque cela ne doit pas s'exécuter dans le thread de l'interface utilisateur, j'ai créé un AsyncTask pour cela.

Le problème est que j'ai une exception d'exécution lorsque je démarre le processus en arrière-plan de l'Asynctask.

Comment puis-je éviter cela?

À partir des logs:

10-12 14:18:56.476: ERROR/AndroidRuntime(1523): java.lang.RuntimeException: Une erreur s'est produite lors de l'exécution de doInBackground()
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:234)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:258)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.FutureTask.run(FutureTask.java:122)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.lang.Thread.run(Thread.java:1058)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523): Caused by: java.lang.RuntimeException: Impossible de créer un gestionnaire à l'intérieur d'un thread qui n'a pas appelé Looper.prepare()
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at android.os.Handler.(Handler.java:121)

2voto

fiXedd Points 21644

Créez-vous l'AsyncTask dans un thread autre que le thread de l'interface utilisateur? Il est presque impossible de déboguer sans voir le code que vous utilisez.

0voto

dongshengcn Points 2259

De l'exception ci-dessus, je suppose que vous faites quelque chose qui dépend de Handler dans la doInBackground, qui est censé s'exécuter dans un thread séparé. Veuillez poster votre code de cette fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X