NetworkOnMainThreadExecption

  • Hallo zusammen,


    ich habe folgendes Problem:


    ich greife in meiner App auf das Netzwerk zur ->


    funktioniert auch bestens, solange ich mit folgendem Code die Policy auf dem Android ausheble.


    Code
    if (android.os.Build.VERSION.SDK_INT > 9) {
            	StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            	StrictMode.setThreadPolicy(policy);
    	}


    wie kann ich den Fehler beheben ohne dieses Aushebeln der Policy?


    Jens

  • Ok funktioniert.


    Weitere Frage. In dem Async-Thread werden Daten empfangen und als String gespeichert. Dieser String wird ja beim Verlassen des Threads auf NULL gesetzt. Wie bekommen ich den String in die MainActivity? Der String soll dort weiterverarbeitet werden.

  • Die Dokumentation ist eigentlich offensichtlich.
    Du hast Methoden, die auf dem MainThread ausgeführt werden.
    Wenn Du den AsyncTask dann noch als innere Klasse definierst, kannst Du auch auf die Properties deiner Activity zugreifen.


    Ansonsten gib ne Referenz auf die Activity mit und definiere Getter und Setter dafür.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Zitat

    Die Dokumentation ist eigentlich offensichtlich.

    Tut mir leid, aber die Android Doku empfinde ich als nichtssagend und unverständlich, keinerlei Beispiele etc. Für Einsteiger völlig ungeeignet. Aber gut seis drum.


    Bekomme den String trotz Dokumentation nicht in meine MainActivity.


    Hier nochmal der Code vom Async-Task



    result muss in die MainActivity. Bitte um konkrete Hilfestellung dies zu bewerkstelligen.

  • Ja, man muss zunächst lernen mit der Dokumentation zurecht zu kommen.
    Meine ersten Gehversuche hatte ich mit Cupcake (1.5) – die Qualität der Dokumentation ist um ungefähr den Faktor 500 besser geworden.


    Überraschung: bevor man für den Marathon trainiert sollte man bereits laufen können. ;)


    Solange Du nicht verstehst, was die Methoden, Routinen und Konzepte so tun, solange wirst Du auch keinen Erfolg haben.


    Das verlinkte Beispiel ist durchaus sehr aussagekräftig und funktional. Es liegt an Dir dies als Grundlage für eigene Übungen zu nutzen und viel damit herumzuprobieren.


    Dein 'result' String wird an die Methode postExecute(String) übergeben.
    Alle weiteren Arbeiten musst Du also in dieser Methode durchführen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Zitat

    Solange Du nicht verstehst, was die Methoden, Routinen und Konzepte so tun, solange wirst Du auch keinen Erfolg haben.

    Was Methoden, Routinen etc. tun, habe ich verstanden (ist nicht das erste Programm dass ich schreibe). Ich verstehe nur folgendes nicht:
    Und das ist der Auszug aus der Android Doku. Wo ist sowas verständlich, und wo ist der Beispielcode verlinkt? Und wenn man jemanden fragt, bekommt man immer den Verweis auf die Doku anstelle einer konkreten Antwort. Verwirrend und unlogisch. Weil Doku ist immer offen, aber wiegesagt, unverständlich.
    :P

  • Beispielsweise mit einem AsyncTask.


    Dem findigen Leser wird auffallen, dass hinter "AsyncTask" ein Link zu einer Dokumentation inklusive Codebeispiel zu finden ist.


    Zur Dokumentation von postExecute:
    Da steht alles wichtige gut dokumentiert.

    • Läuft auf dem UI Thread
    • nach Beendigung von doInBackground(...)
    • mit dem Rückgabewert von doInBackground(...) als Parameter
    • sofern die Bearbeitung nicht abgebrochen wurde


    Wenn Du die Konzepte, Routinen und Methoden verstanden hast, dürfte es für Dich ja ein Leichtes sein, aus dieser auf dem UI Thread ausgeführten Methode mit dem übergebenen XML String die Daten an Deine Activity zu übergeben.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!