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