Solution rapide pour NetworkOnMainThreadException
J'ai besoin d'exécuter des tiers programme open source, qui jette NetworkOnMainThreadException. Selon la référence du kit de développement, ce n'est jeté pour des applications ciblant le Nid d'abeille SDK ou plus. Les Applications ciblant les précédentes versions du SDK sont autorisés à faire du réseautage sur leur boucle principale threads.
Sur la première étape, je veux juste pour exécuter le programme, sans modification de la source. Donc, j'ai changé la ligne dans AndroidManifesr.xml de:
android:targetSdkVersion="15"
:
android:targetSdkVersion="10"
Cependant, cela n'aide pas, et le programme en jette toujours NetworkOnMainThreadException. Comment puis-je faire ce travail? Je suis en train d'exécuter le programme sur Android Émulation Api Google (niveau 16).
OriginalL'auteur Alex F | 2012-09-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le changer à:
API 10 correspond à nid d'abeille, tandis que 9 est en pain d'épice. Ce comportement est visible uniquement dans les Api de 10 et au-dessus.
Cependant, je vous conseille à cet égard. Au lieu de cela, vous devez déplacer le long, exécutant des opérations ou des opérations avec la possibilité de courir pendant longtemps dans un thread d'arrière-plan, comme un AsyncTask.
Vous pouvez également essayer de définir le Mode Strict off à l'aide de:
Je suis d'accord que c'est une mauvaise solution, mais il a certainement identifié pourquoi cela a commencé tout à coup quand j'ai mis à jour un ancien projet.
OriginalL'auteur Raghav Sood
Vous effectuez les tâches de réseau sur votre Thread de l'INTERFACE utilisateur. La meilleure manière d'effectuer l'exploitation du réseau est d'utiliser AsyncTask ou tout simplement de créer un autre thread. Toutefois, si vous souhaitez une façon rapide et sale pour se débarrasser de l'erreur; vous pouvez également utiliser cette
OriginalL'auteur Infinity
Ce ne sont pas des solutions, il vous suffit d'indiquer le tutelar de sommeil et le seuil!!!
le android décider de ne pas vous laisser faire les opérations de réseau dans le thread principal (thread d'INTERFACE utilisateur), en raison de la "arrête" que ces opérations peuvent faire (l'interface utilisateur cesser de répondre).
Donc, comme je l'ai lu, ils vous disent de ne pas tirer votre jambe, et vous trouvez le moyen de le faire!!!
la solution : séparés de fil, Ou Asynchrone ...
il est clair et pas complexe, les documentations dire que vous ne devriez pas faire des opérations du réseau dans le thread principal. ma réponse n'est pas mal, alors pourquoi l'-1 ?? juste parce que vous imaginez setuation que besoin d'un réseau principal??
EsmaeelQuash, il est une instruction non valide de dire que les autres réponses "ne sont pas des solutions". C'est pourquoi l'-1.Les autres solutions sont en fait de bonnes solutions pour les cas où vous avez besoin de cela. Il n'est pas recommandé de faire de l'activité du réseau sur le thread principal, mais cela ne signifie pas il n'y a pas de raisons valables de le faire qui nécessitent des solutions valables.
OK, je veux dire, si le système d'exploitation refuser de le faire (Réseau principal), cela signifie qu'il n'est pas recommandé de se tourner autour et Faire. le programmeur indique le système d'exploitation qu'il utilise la version précédente comme objectif de le laisser faire "illégal" Opération!!! est-ce la solution? Je dis dans le bon sens (séparés thread). mais si il faut faire du réseau principal c'est une autre question.
OriginalL'auteur EsmaeelQash