Junior — Middle
Czy główny wątek może wykonywać żądania sieciowe bez blokad lub problemów z wydajnością?
sobes.tech AI
Odpowiedź od AI
W Androidzie główny (UI) wątek nie powinien wykonywać bezpośrednio żądań sieciowych, ponieważ prowadzi to do blokowania interfejsu i pogorszenia wydajności aplikacji. Operacje sieciowe mogą zająć znaczną ilość czasu, a jeśli są wykonywane w głównym wątku, aplikacja przestanie odpowiadać na działania użytkownika.
Aby zapobiec blokadom, używa się:
- Zadania asynchroniczne (AsyncTask, choć obecnie przestarzałe)
- Wątki (Thread, HandlerThread)
- Biblioteki obsługujące asynchroniczność (np. Retrofit z Coroutines)
- Kotlin Coroutines lub RxJava
Przykład z Kotlin Coroutines:
GlobalScope.launch(Dispatchers.Main) {
val result = withContext(Dispatchers.IO) {
// Wykonanie żądania sieciowego w tle
fetchDataFromNetwork()
}
// Aktualizacja UI z wynikiem
updateUI(result)
}
W ten sposób główny wątek nie jest blokowany, a aplikacja pozostaje responsywna.