¿Cómo arreglar Android Os.NetworkOnMainThreadException?

Mediante el uso de AsyncTask (recomendado)

importar androidx.appcompat.app.AppCompatActivity; importar android.os.AsyncTask; importar android.os.Bundle; importar android.widget.TextView; importar java.io.BufferedReader; importar java.io.IOException; importar java.io.InputStreamReader; importar java.net.URL; clase pública MainActivity extiende AppCompatActivity { TextView textLoad, textMessage; final String strMessage = “https://sites.google.com/site/androidersite/text.txt”; @Override protected void onCreate(Paquete de estado de instancia guardado) { super.onCreate(estado de instancia guardado); setContentView(R.diseño.actividad_principal); textLoad = findViewById(R.id.textLoad); mensaje de texto = findViewById (R.id.textMessage); textLoad.setText(“Cargando…”); nueva MiTarea().ejecutar(); } clase privada MyTask extiende AsyncTask{ String resultado; @Override protected Void doInBackground(Void… voids) { URL url; intente { url = nueva URL (strMessage); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream())); Cadena cadenaBuffer; Cadena cadena = “”; while ((stringBuffer = bufferedReader.readLine()) != null){ string = String.format(“%s%s”, string, stringBuffer); } bufferedReader.close(); resultado = cadena; } catch (IOException e){ e.printStackTrace(); resultado = e.toString(); } devuelve nulo; } @Override protected void onPostExecute(Void aVoid) { textMessage.setText(resultado); textLoad.setText(“Terminado”); super.onPostExecute(aVoid); } } }

Deshabilitar modo estricto (no recomendado)

if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy política = new StrictMode.ThreadPolicy.Builder().permitAll().build(); Modo estricto.setThreadPolicy(política); }

Última actualización: 11 de junio de 2023

punto 1
¿Una solicitud?

Me he esforzado mucho en escribir esta publicación de blog para brindarle valor. Será muy útil para mí, si considera compartirlo en las redes sociales o con sus amigos/familiares. COMPARTIR ES ♥️

23 pensamientos sobre "¿Cómo solucionar Android Os.NetworkOnMainThreadException?"

  1. El uso de AsyncTask y la implementación de actualizaciones de la interfaz de usuario en onPostExecute muestran buenas prácticas de codificación.

    Responder
  2. El uso de AsyncTask en este código proporciona una separación clara entre la interfaz de usuario y las tareas en segundo plano. ¡Bien hecho!

    Responder
    • Es cierto que AsyncTask puede provocar pérdidas de memoria si no se utiliza con cuidado. Los desarrolladores deben ser conscientes de esto.

      Responder

Deja un comentario

¿Quieres guardar este artículo para más tarde? ¡Haz clic en el corazón en la esquina inferior derecha para guardar en tu propio cuadro de artículos!