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