AsyncTask wird nicht/sporadisch ausgeführt und dann auch nicht korrekt

  • Antworten:4
  • GeschlossenNicht stickyBentwortet
  • Forum-Beiträge: 690

24.06.2016, 07:55:28 via Website

Hallo,

meine App verwendet einen ASyncTask um Daten von einem Server abzurufen und zu verarbeiten. Der Server sendet in diesem String u.a. eine Information, welche Räume verwendet werden.
Das Problem ist nun, dass aus einem mir nicht verständlichen Grund dieser AsyncTask nicht mal aufgerufen wird bzw. falls er dann doch aufgerufen wird, nicht alle darin verwendeten Routinen durchlaufen werden.

Ich hab das gesamte Projekt (AndroidStudio-Projekt) mal bei DropBox abgelegt. Abgerufen werden kann es hier.
Wichtig! Es ist mein eigenes Projekt und es geht mir nur darum, diesen Fehler zu finden (Liebe Admins, bitte daher den Link nicht löschen - ich habe die Regeln gelesen und hoffentlich richtig interpretiert).

Innerhalb des Projekts in der Klasse CubeControlFragment.java ist die lokale Klasse
public class HoleRaumNamenTask extends AsyncTask deklariert. Diese soll die Server-Verbindung herstellen (im Moment ersetzt durch eine Zuweisung eines deklarierten Strings) und anschließend z.a. die Räume aus dem String extrahieren

Bevor sich jemand über die gesamte Struktur wundert: Da ich noch keinerlei Erfahrung in der Android-Programmierung habe, habe ich mich grundsätzlich am Tutorial von hier orientiert und versucht, das an meine Aufgabenstellung anzupassen.

Das Projekt enthält noch die Haltepunkte an den Stellen, wo in den AsyncTask gesprungen wird sowie innerhalb der dann aufgerufenen Routinen.

Vielleicht ist jemand so nett und erbarmt sich, mir den richtigen Lösungsweg zu zeigen oder zu erklären, warum es so nicht funktioniert?

Vielen Dank und Gruss
G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

24.06.2016, 10:42:05 via Website

Was wird denn genau nicht aufgerufen?
dein execute(...) ruft die doInBackground im anderen Thread auf. Die müsste dann auch durchlaufen.

Verstehe ich das richtig, das der Hardcoded String als Stream kodiert zum Test dienst, damit man kein Netzwerkgerät braucht um das zu testen?

Es tritt auch keine Exception o.ä. auf (LogCat?)
Beschreib mal genauer was nicht geht und ARbeite mit Log.d(...)
Debuggen in Threads kann auch manchmal schiefgehen, da man zum debuggen ja "synchron" sein muss.
Deswegen lieber mal Log ausgaben machen.

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

Gerd-Ulrich M.

  • Forum-Beiträge: 690

24.06.2016, 10:54:34 via Website

Pascal P.

Was wird denn genau nicht aufgerufen?
dein execute(...) ruft die doInBackground im anderen Thread auf. Die müsste dann auch durchlaufen.

Zumindest im Debugger passiert das nicht - und wenn ich es so durchlaufen lassen, finde ich den Fehler nicht.

Verstehe ich das richtig, das der Hardcoded String als Stream kodiert zum Test dienst, damit man kein Netzwerkgerät braucht um das zu testen?

Richtig. Ich hab das Netzwerkgerät zwar mit Hilfe eines andren Programms simuliert, aber das ist mir trotzdem noch zu umständlich. Daher der Hardcoded String.

Es tritt auch keine Exception o.ä. auf (LogCat?)
Beschreib mal genauer was nicht geht und ARbeite mit Log.d(...)
Debuggen in Threads kann auch manchmal schiefgehen, da man zum debuggen ja "synchron" sein muss.
Deswegen lieber mal Log ausgaben machen.

Ok, dann fange ich damit mal an - und sobald ich Log ausgaben hab, meld ich mich wieder. Ist doch ein Anfang. Dankeschön.

Gruss
G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

  • Forum-Beiträge: 690

12.08.2016, 10:38:54 via Website

Fall über anderen Thread geklärt.
Trotzdem auch hier Danke an die Mithelfer und Mitdenker.
Gruss
G.-U.M.

N'y pas n'y
tu car tu
mal tu mal

  • Forum-Beiträge: 22.353

13.08.2016, 10:04:14 via Website

Na das freut mich, dass dir geholfen werden konnte (cool)

Ich mach hier dann mal zu - der andere Thread ist ja noch offen, falls doch noch Fragen sind ;)

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Empfohlene Artikel