Konwertuję mój kod z używania Handlerna AsyncTask. Ten ostatni jest świetny w tym, co robi - asynchronicznych aktualizacjach i obsłudze wyników w głównym wątku interfejsu użytkownika. Nie jest dla mnie jasne, jak radzić sobie z wyjątkami, jeśli coś pójdzie nie tak AsyncTask#doInBackground.
Sposób, w jaki to robię, to mieć obsługę błędów i wysyłać do niego komunikaty. Działa dobrze, ale czy jest to „właściwe” podejście, czy też jest lepsza alternatywa?
Rozumiem również, że jeśli zdefiniuję obsługę błędu jako pole działania, powinien on zostać wykonany w wątku interfejsu użytkownika. Jednak czasami (bardzo nieprzewidywalnie) otrzymuję wyjątek informujący, że kod wyzwalany z Handler#handleMessagejest wykonywany w niewłaściwym wątku. Czy Activity#onCreatezamiast tego powinienem zainicjować procedurę obsługi błędów ? Umieszczanie runOnUiThreadw programie Handler#handleMessagewydaje się zbędne, ale działa bardzo niezawodnie.