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.