Ich konvertiere meinen Code von mit Handler
zu AsyncTask
. Letzteres ist großartig in dem, was es tut - asynchrone Aktualisierungen und Verarbeitung der Ergebnisse im Haupt-UI-Thread. Was mir unklar ist, ist, wie man mit Ausnahmen umgeht, wenn etwas durcheinander gerätAsyncTask#doInBackground
.
Ich mache es so, dass ich einen Fehlerhandler habe und Nachrichten an ihn sende. Es funktioniert gut, aber ist es der "richtige" Ansatz oder gibt es eine bessere Alternative?
Ich verstehe auch, dass der Fehlerhandler, wenn ich ihn als Aktivitätsfeld definiere, im UI-Thread ausgeführt werden sollte. Manchmal (sehr unvorhersehbar) erhalte ich jedoch eine Ausnahme, die besagt, dass der von ausgelöste Code Handler#handleMessage
auf dem falschen Thread ausgeführt wird. Sollte ich Activity#onCreate
stattdessen den Fehlerhandler initialisieren ? Das Einfügen runOnUiThread
in Handler#handleMessage
erscheint überflüssig, wird jedoch sehr zuverlässig ausgeführt.