Класс NetworkOnMainThreadException
Класс NetworkOnMainThreadException
в strict mode останавливает приложение,
если на UI thread вызвать блокирующую сеть.
Типичный триггер - HttpURLConnection
или InputStream.read к интернету
прямо в onCreate.
Запросы выносят в корутину, worker
или LaunchedEffect
с IO dispatcher.
Пример
Давайте покажем UI без сетевого вызова в onCreate:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text(text = "abcde")
}
}
}
Такой экран не трогает сеть на main thread.
Если открыть URL синхронно здесь,
debug сборка бросит
NetworkOnMainThreadException.
Смотрите также
-
класс
CalledFromWrongThreadException,
если View меняют не с UI thread -
функция
LaunchedEffect,
откуда запускают suspend сеть -
метод
onCreate,
где нельзя блокировать главный поток -
функция
setContent,
которую не смешивают с sync HTTP