Можно ли ходить в сеть на Main Thread

«Можно ли ходить в сеть на Main Thread» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, на Main Thread нельзя выполнять сетевые запросы. Это приведёт к NetworkOnMainThreadException. Main Thread (UI Thread) предназначен для работы с UI, а сетевые операции могут блокировать его, вызывая лаги и ANR (Application Not Responding).

Решение: Используйте фоновые потоки (например, через Coroutine, RxJava, AsyncTask (deprecated)) или WorkManager для долгих задач.

Пример с Kotlin Coroutine:

viewModelScope.launch(Dispatchers.IO) {  
    val response = retrofitService.fetchData()  
    withContext(Dispatchers.Main) {  
        updateUI(response)  
    }  
}