2 Stimmen

Android heavy asyncTask causes phone to reboot

Hier ist, was ich umsetzen möchte:

Wenn der Benutzer auf einen Button klickt, starte ich etwa 4 bis 5 AsyncTasks; jeder AsyncTask startet eine URL-Anfrage, analysiert das von der URL-Anfrage zurückgegebene XML und gibt schließlich das Array mit den analysierten Objekten zurück. Und bevor alle AsyncTask fertig sind, zeige ich einen rotierenden Pfeil in der Mitte des Bildschirms.

Das Problem ist, dass das Telefon manchmal plötzlich neu startet, wenn die Suche vor einigen Sekunden begonnen hat und ich nicht weiß, warum. Dies tritt nicht sehr oft auf, ist aber sehr ärgerlich.

Außerdem ist die Drehanimation des Pfeils nicht flüssig: Manchmal, wenn der Parser arbeitet, verzögert sich die Animation für einige Sekunden.

Ich überlege, ob dies ein Speicherproblem ist? Oder ob ich die Analysearbeit in serieller Reihenfolge durchführen sollte?

Alle Ideen sind willkommen, danke!

\========================================

Hinweis:

Der Code ist zu lang, daher kann ich ihn hier nicht einfügen. Es gibt 5 Parser und zu viel Logik.

Außerdem, wenn das Telefon während der Suche zufällig neu startet, gibt es kein Fehlerprotokoll

0voto

Ram Punkte 2532

Verwenden Sie Java-Threads anstelle von AsyncTask:

  • Netzwerkoperationen, die moderate bis große Datenmengen umfassen (Entweder Hochladen oder Herunterladen) High-CPU-Aufgaben, die im Hintergrund ausgeführt werden müssen
  • Jede Aufgabe, bei der Sie die CPU-Auslastung im Verhältnis zum GUI-Thread steuern möchten

Und es gibt viele gute Ressourcen im Internet, die Ihnen helfen können:

http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html http://www.mergeconflict.net/2012/05/java-threads-vs-android-asynctask-which.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X