Как исправить 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 расширяет AsyncTask {String result; @Override protected Void doInBackground (Void… voids) {URL-адрес; попробуйте {URL = новый URL (strMessage); BufferedReader bufferedReader = новый BufferedReader (новый InputStreamReader (url.openStream ())); Строка stringBuffer; Строка строка = «»; while ((stringBuffer =ufferedReader.readLine()) != null){ string = String.format("%s%s", string, stringBuffer); }ufferedReader.close(); результат = строка; } catch (IOException e) { e.printStackTrace(); результат = e.toString(); } Вернуть ноль; } @Override protected void onPostExecute (Void aVoid) { textMessage.setText (результат); textLoad.setText («Завершено»); super.onPostExecute(aVoid); } } }

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

если (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy политика = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); }

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

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

Сандип Бхандари
Сандип Бхандари

Сандип Бхандари имеет степень бакалавра вычислительной техники Университета Тапар (2006 г.). Имеет 20-летний опыт работы в сфере технологий. Он проявляет большой интерес к различным техническим областям, включая системы баз данных, компьютерные сети и программирование. Подробнее о нем можно прочитать на его био страница.

23 комментариев

  1. Удивительно видеть в коде предложение отключить строгий режим. Действительно сомнительное решение.

    • Кажется комичным противоречием рекомендовать что-то, одновременно заявляя, что это не рекомендуется.

    • Я согласен, что приоритет безопасности всегда должен быть непреложным при разработке приложений.

  2. Зависимость кода от AsyncTask и правильная обработка ошибок служат хорошим примером для других разработчиков.

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

    • По иронии судьбы, код предлагает отключить строгий режим, хотя упоминает, что это не рекомендуется.

    • Согласен, при разработке Android важно уделять приоритетное внимание безопасности и производительности.

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

    • Приятно видеть чистый и организованный код, в котором приоритет отдается пользовательскому опыту.

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

  5. Меня не убедило решение отключить строгий режим. Безопасность никогда не должна быть поставлена ​​под угрозу.

    • Я разделяю ваши опасения. Безопасность всегда должна быть главным приоритетом при разработке приложений.

  6. Код демонстрирует правильную обработку ошибок и предоставляет пользователю информативные сообщения.

    • Безусловно, пользователи всегда должны быть проинформированы о любых возникающих проблемах.

    • Обработка ошибок имеет решающее значение в любом приложении для обеспечения хорошего пользовательского опыта.

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

    • Да, он соответствует лучшим практикам обработки фоновых задач при разработке Android.

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

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

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

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *

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