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