Schnellkorrektur für NetworkOnMainThreadException

8

Ich muss ein Drittanbieter-Open-Source-Programm ausführen, das NetworkOnMainThreadException auslöst. Laut SDK-Referenz wird dies nur für Anwendungen ausgelöst, die auf das Honeycomb SDK oder höher abzielen. Anwendungen, die auf frühere SDK-Versionen abzielen, dürfen in ihren Main-Event-Loop-Threads netzwerkfähig sein.

Auf der ersten Stufe möchte ich nur das Programm ausführen, ohne die Quelle zu ändern. Also habe ich die Zeile in AndroidManifesr.xml geändert von:

%Vor%

zu:

%Vor%

Dies hilft jedoch nicht, und das Programm löst weiterhin NetworkOnMainThreadException aus. Wie kann ich das zum Funktionieren bringen? Ich versuche, das Programm auf Android Emulation Google APIs (Stufe 16) auszuführen.

    
Alex F 29.09.2012, 07:44
quelle

3 Antworten

20

Sie können es wie folgt ändern:

%Vor%

API 10 entspricht Honigwaben, während 9 Lebkuchen ist. Dieses Verhalten wird nur in API 10 und höher angezeigt.

Ich würde jedoch davon abraten. Stattdessen sollten Sie lange laufende Operationen oder Operationen mit der Möglichkeit, lange in einen Hintergrund-Thread zu laufen, wie z. B. AsyncTask .

Sie können auch versuchen, den Strict-Modus zu deaktivieren, indem Sie:

verwenden %Vor%     
Raghav Sood 29.09.2012, 07:46
quelle
3

Sie führen eine Netzwerkaufgabe auf Ihrem UI-Thread aus. Die beste Möglichkeit, Netzwerkoperationen durchzuführen, besteht darin, AsyncTask zu verwenden oder einfach einen anderen Thread zu erstellen. Wenn Sie jedoch einen schnellen und schmutzigen Weg wollen, um den Fehler loszuwerden; Du kannst dies auch verwenden

%Vor%     
Infinity 29.09.2012 07:49
quelle
0

Das sind keine Lösungen, sag dem Tutelar nur zu schlafen und zu schwellen !!! der android entscheidet sich nicht zu erlauben, netzwerkoperationen im haupt thread (UI thread) zu machen, wegen der "halt", die diese operation machen kann (die ui stop antworten). Also, während ich lese, sagen sie dir, du sollst dein Bein nicht schießen, und du findest den Weg, es zu tun !!!

die Lösung: getrennter Thread, oder Async ...

    
EsmaeelQash 04.12.2013 23:17
quelle