Sto convertendo il mio codice dall'uso Handler
a AsyncTask
. Quest'ultimo è eccezionale in ciò che fa: aggiornamenti asincroni e gestione dei risultati nel thread dell'interfaccia utente principale. Ciò che non è chiaro per me è come gestire le eccezioni se qualcosa va in tilt AsyncTask#doInBackground
.
Il modo in cui lo faccio è avere un gestore degli errori e inviare messaggi ad esso. Funziona bene, ma è l'approccio "giusto" o esiste un'alternativa migliore?
Inoltre capisco che se definisco l'errore Handler come campo Activity, dovrebbe essere eseguito nel thread dell'interfaccia utente. Tuttavia, a volte (molto imprevedibilmente) riceverò un'eccezione che dice che il codice attivato da Handler#handleMessage
viene eseguito sul thread errato. Dovrei invece inizializzare Error Handler in Activity#onCreate
? La collocazione runOnUiThread
in Handler#handleMessage
sembra ridondante ma si esegue in modo molto affidabile.