Solución:
No debe realizar solicitudes de red en el hilo principal. El retraso es impredecible y podría congelar la interfaz de usuario.
Android fuerza este comportamiento lanzando una excepción si usa el HttpUrlConnection
objeto del hilo principal.
Luego, debe realizar su solicitud de red en segundo plano y luego actualizar la interfaz de usuario en el hilo principal. los AsyncTask
¡La clase puede ser muy útil para este caso de uso!
private class GetUrlContentTask extends AsyncTask<String, Integer, String> {
protected String doInBackground(String... urls) {
URL url = new URL(urls[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String content = "", line;
while ((line = rd.readLine()) != null) {
content += line + "n";
}
return content;
}
protected void onProgressUpdate(Integer... progress) {
}
protected void onPostExecute(String result) {
// this is executed on the main thread after the process is over
// update your UI here
displayMessage(result);
}
}
Y comienzas este proceso de esta manera:
new GetUrlContentTask().execute(sUrl)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)