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
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