Sobes.tech
Junior — Middle

Co się stanie, jeśli wykonasz żądanie sieciowe w głównym wątku programu?

sobes.tech AI

Odpowiedź od AI

Jeśli wykonasz żądanie sieciowe w głównym (UI) wątku aplikacji Android, spowoduje to zablokowanie interfejsu użytkownika do czasu zakończenia żądania. W rezultacie aplikacja przestanie reagować na działania użytkownika, co może wywołać ANR (Application Not Responding) – systemowe ostrzeżenie o zawieszeniu.

Dlatego operacje sieciowe należy wykonywać w wątku tła, na przykład używając AsyncTask, Thread, Coroutine lub bibliotek takich jak Retrofit z obsługą asynchroniczności.

Przykład z Kotlin Coroutine:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // żądanie sieciowe
    }
    // aktualizacja UI z wynikiem
}