Я конвертирую свой код с Handler
на AsyncTask
. Последний хорош в том, что делает - асинхронные обновления и обработка результатов в основном потоке пользовательского интерфейса. Мне неясно, как обрабатывать исключения, если в AsyncTask#doInBackground
что-то пойдет не так.
Я использую обработчик ошибок и отправляю ему сообщения. Он работает нормально, но это «правильный» подход или есть лучшая альтернатива?
Также я понимаю, что если я определяю обработчик ошибок как поле Activity, он должен выполняться в потоке пользовательского интерфейса. Однако иногда (очень непредсказуемо) я получаю исключение, в котором говорится, что код, запускаемый из Handler#handleMessage
, выполняется в неправильном потоке. Должен ли я вместо этого инициализировать обработчик ошибок в Activity#onCreate
? Помещение runOnUiThread
в Handler#handleMessage
кажется излишним, но выполняется очень надежно.