Auf Serverantwort warten

  • Antworten:7
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 62

18.08.2014, 18:00:07 via Website

Hallo,

ich arbeite gerade das erste mal mit Netzwerkoperationen, habe jetzt aber ein Problem. Und zwar möchte ich per HTTP Post etwas an einen Server schicken, und dann auf eine Antwort warten. Und erst sobald ich die Antwort habe, soll im Main Thread weitergearbeitet werden. Am besten sollte solange ein ProgressCyrcle gezeigt werden. Das Problem ist, dass man anscheinend im MainThread keine Netzwerkoperationen ausführen kann. Somit kann ich den MainThread auch nicht einfach durch die Netzwerkoperationen blockieren lassen, bis die antwort da ist. Hat jemand eine Idee, wie ich das am besten handhaben kann? Vielen dank schonmal.

mfg

Antworten
  • Forum-Beiträge: 11.137

18.08.2014, 18:05:12 via App

Da ist es gut einen AsyncTask mit Callback zu nutzen. Im Asynchronen Task kannst du die Netzwerkoperationen Ausführen und dann durch den Callback wird dem Mainthread bescheidgegeben wenn der Ladevorgang abgeschlossen ist.
Dann kannst du dort weiterarbeiten lassen.

Würde man solche ladevorgänge nicht in externen Threads ausführen, dann würde die UI einfrieren und nach einiger Zeit die App zum Absturz bringen

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 62

18.08.2014, 18:15:16 via Website

Und wie kann ich den MainThread solange anhalten, bis der CallBack kommt?
Denn für die weiteren operationen werden die Serverdaten gebraucht, sonst stürzt die App ab.

Antworten
  • Forum-Beiträge: 11.137

18.08.2014, 18:16:46 via App

Du musst den doch nicht warten lassen.
Führe doch das bearbeiten der Daten aus nachdem der Calkback aufgerufen wurde.

Ps Nicht so Denken als muss im Mainthread dauernd was laufen.

— geändert am 18.08.2014, 18:17:30

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 62

18.08.2014, 18:24:01 via Website

Ja, nur wird direkt nach dem Aufrufen der Netzwerkoperationen ein Intent gebastelt, in den auch die Serverantwort als Extra rein kommt, und abgeschickt, und die nächste Activity braucht die Daten dann direkt in der onCreate().Das heißt, wenn ich den MainThread nicht irgendwie blockiere bis der CallBack kommt, dann macht er ja direkt mit dem Intent weiter und die App stürzt ab.

Antworten
  • Forum-Beiträge: 11.137

18.08.2014, 18:29:47 via App

Nein.
Du darfst das Intent erst nach dem Callback erstellen und starten.
Ps callback ist eine Methode die dann aufgerufen wird. Warum kannst du da kein Intent erstellen?

— geändert am 18.08.2014, 18:30:31

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 62

18.08.2014, 18:38:13 via Website

Ahhhhh ja stimmt, den Intent einfach im CallBack erstellen. Sorry, hatte wohl gerade einfach ein Brett vorm Kopf.^^

Antworten
  • Forum-Beiträge: 11.137

18.08.2014, 18:38:50 via App

Kein Problem ;)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten