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