# AsyncTask / Download sehr langsam



## toterwinkel (11. Dez 2015)

Hallo liebes Forum,

ich habe vor kurzem begonnen, mich mit der App Entwicklung zu befassen und stehe nun vor einem Problem. 

Zur Situation: Der Inhalt einer Datenbankabfrage soll heruntergeladen werden. Die für die Abfrage relevanten Daten übertrage ich in der URL. Die Antwort der PHP Seite lade ich über einen Stream herunter und bereite sie im Main Thread graphisch auf. Die Kommunikation mit dem Server erfolgt in einem AsyncTask, der in seiner OnPostExecute() eine Methode aus dem Main Thread ausführt, die die Daten dem Nutzer visuell zur Verfügung stellt. 

Und hier beginnt das Problem. Die Zeit zwischen Aufruf des AsycTasks und dem Ausführen der OnPostExecute beträgt zwischen 7 und 9 Sekunden, obwohl nur 5000 Zeichen heruntergeladen werden sollen. Wenn ich Pfusche und die OnPostExecute nicht nutze(
etwa so:
new DownloadTask.execute("url");
Thread.sleep(1500);
showdata();
)
funktioniert das Ganze auch in sehr viel kürzerer Zeit. Die Daten kommen vollständig an. Allerdings muss ich mich bei dieser Variante darauf verlassen, dass die 1500ms auch bei einer langsamen Internetverbindung ausreichen sind, außerdem friert mir der UI Thread ein und überhaupt ist diese Lösung kacke. 
Die Priorität des Background Threads zu erhöhen hat übrigens nichts verändert. 

Ich hoffe das Problem präzise genug geschildert zu haben und freue mich über jeden Lösungsvorschlag oder Ansatz.

Liebe Grüße,

toterwinkel


----------



## buggy84 (11. Dez 2015)

Ich mache das auch immer so, aber wenn, dann maximal in einem sepparaten Thread, nicht in einem Task. Man muss halt seine Handler selbst zusammenklöppeln, aber das geht ja fix. Ich habe einige Sachen ausprobiert, und hatte, wenn ich mich recht erinnere, auch Performace Einbußen beim AsyncTask, deshalb diese Idee gleich wieder verworfen.


----------



## toterwinkel (11. Dez 2015)

Habe meinen Fehler gefunden. Der AsyncTask ist nicht schuld. Eine Methode aus einer anderen Klasse zur Authentifizierung die in der OnStart() ausgeführt wird braucht zu lange. 
Thread kann geschlossen werden.


----------

