Как исправить Android Os.NetworkOnMainThreadException?

С помощью AsyncTask (рекомендуется)

импортировать androidx.appcompat.app.AppCompatActivity; импортировать android.os.AsyncTask; импортировать android.os.Bundle; импортировать android.widget.TextView; импортировать java.io.BufferedReader; импортировать java.io.IOException; импортировать java.io.InputStreamReader; импортировать java.net.URL; открытый класс MainActivity расширяет AppCompatActivity { TextView textLoad, textMessage; конечная строка strMessage = «https://sites.google.com/site/androidersite/text.txt»; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); textLoad = findViewById(R.id.textLoad); textMessage = findViewById(R.id.textMessage); textLoad.setText("Загрузка..."); новая MyTask().execute(); } частный класс MyTask extends AsyncTask{ Результат строки; @Override protected Void doInBackground(Void… voids) { URL-адрес; попробуйте { url = новый URL (strMessage); BufferedReader bufferedReader = новый BufferedReader (новый InputStreamReader (url.openStream())); Строка stringBuffer; Строка строка = ""; while ((stringBuffer = bufferedReader.readLine()) != null){ string = String.format("%s%s", string, stringBuffer); } bufferedReader.close(); результат = строка; } catch (IOException e){ e.printStackTrace(); результат = e.toString(); } вернуть ноль; } @Override protected void onPostExecute(Void aVoid) { textMessage.setText(result); textLoad.setText («Готово»); super.onPostExecute(aVoid); } } }

Отключить строгий режим (не рекомендуется)

если (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy политика = новый StrictMode.ThreadPolicy.Builder().permitAll().build(); Строгий режим.setThreadPolicy(политика); }

Последнее обновление: 11 июня 2023 г.

точка 1
Один запрос?

Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️

23 мысли о «Как исправить Android Os.NetworkOnMainThreadException?»

  1. Отключать строгий режим не рекомендуется из-за потенциальных проблем с безопасностью и производительностью.

    Ответить
  2. Использование AsyncTask и реализация обновлений пользовательского интерфейса в onPostExecute демонстрируют хорошие практики кодирования.

    Ответить
  3. Использование AsyncTask в этом коде обеспечивает четкое разделение задач пользовательского интерфейса и фоновых задач. Отличная работа!

    Ответить
  4. Хотя AsyncTask может быть рекомендован, важно учитывать потенциальные утечки памяти, которые он может вызвать.

    Ответить
    • Действительно, AsyncTask может привести к утечкам памяти, если использовать его неаккуратно. Разработчики должны знать об этом.

      Ответить

Оставьте комментарий

Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!