Wer hat schon mal einen größeren Submit (z.b. in ein SVN oder git Repository) schrittweise revertet/zurückgenommen? Ich zum Beispiel, als ich gestern einen echt dummen Fehler gesucht habe. Mein Problem bestand darin, das ich nicht wusste, dass AsyncTask sequentiell und nicht parallel ausgeführt werden. In Android 2.x war das mal kurzzeitig so, aber ab Android 3.x (honeycomb) ist es standardmäßig sequentiell. Das führt natürlich zu dem Verhalten, dass sich AsyncTask gegenseitig blockieren oder erst gar nicht ausgeführt werden.
Als Android-Entwickler ist man stets bemüht alle rechenintensiven und langwierigen Aufgaben in kleine externe Threads/AsyncTasks auszulagern. Aber wenn man mal die Verarbeitungszeit genau misst, fällt man fast vom Stuhl!
3 bis 5 mal so lange braucht ein AsyncTasks, um zum Beispiel Daten aus einer SQLite Datenbank zuladen. (Im Vergleich zum UI-Thread) Jedoch gibt es einen kleinen Trick, den ich in diesem Beitrag erkläre.
(mehr …)