Как правильно использовать URL-адрес с Kotlin Android

Я хочу использовать

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val json = URL("https://my-api-url.com/something").readText() simpleTextView.setText(json) } 

но эта фатальная ошибка возникает

 FATAL EXCEPTION: main Process: com.mypackage.randompackage, PID: 812 java.lang.RuntimeException: Unable to start activity ComponentInfo{ ***.MainActivity}: android.os.NetworkOnMainThreadException 

Как я могу просто прочитать JSON по ссылке URL? Пакет функции async не существует.

Android не разрешает доступ в Интернет из основного потока. Самый простой способ – открыть URL-адрес в фоновом потоке.

Что-то вроде этого:

 Executors.newSingleThreadExecutor().execute({ val json = URL("https://my-api-url.com/something").readText() simpleTextView.post { simpleTextView.text = json } }) 

Не забудьте зарегистрировать разрешение на использование Интернета в файле манифеста Android.

Вы можете использовать сопрограммы:

 val json = async(UI) { URL("https://my-api-url.com/something").readText() } 

Не забудьте добавить сопрограммы для сборки.gradle:

 kotlin { experimental { coroutines "enable" } } ... dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_coroutines_version" ... } 

Короуты блестящие.