Sobes.tech
Junior — Middle

Jak zapewnić, aby operacje były wykonywane w taki sposób, aby nie blokowały interfejsu użytkownika?

sobes.tech AI

Odpowiedź od AI

Aby operacje nie blokowały interfejsu użytkownika na Androidzie, należy wykonywać je w wątku tła, a nie w głównym (UI) wątku. Do tego można użyć:

  • AsyncTask (przestarzałe, ale często występuje w starym kodzie)
  • HandlerThread lub Handler
  • ExecutorService
  • Kotlin Coroutines (nowoczesny i zalecany sposób)
  • RxJava

Na przykład, za pomocą korutyn można to zrobić tak:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Długa operacja, np. zapytanie sieciowe
        fetchData()
    }
    // Aktualizacja UI z wynikiem
    textView.text = result
}

W ten sposób ciężka praca jest wykonywana w wątku tła (IO), a aktualizacja interfejsu w głównym wątku.