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