Sobes.tech
Junior — Middle

Come garantire che le operazioni vengano eseguite in modo da non bloccare l'interfaccia utente?

sobes.tech AI

Risposta dell'AI

Per evitare che le operazioni blocchino l'interfaccia utente su Android, è necessario eseguirle in un thread di background, non nel thread principale (UI). Per farlo, si può usare:

  • AsyncTask (deprecato, ma ancora presente nel codice vecchio)
  • HandlerThread o Handler
  • ExecutorService
  • Coroutines di Kotlin (metodo moderno e raccomandato)
  • RxJava

Ad esempio, con le coroutines si può fare così:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Operazione lunga, ad esempio richiesta di rete
        fetchData()
    }
    // Aggiornamento dell'UI con il risultato
    textView.text = result
}

In questo modo, il lavoro pesante viene eseguito in un thread di background (IO), e l'aggiornamento dell'interfaccia avviene nel thread principale.