Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo detener HttpURLConnection conectar en Android

Utilizo AsyncTask para conectar un URLPath como el código debajo.

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.left_list); Button btn = (Button)findViewById(resid); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //how to stop connect } }); new Connecting().execute(); } class Connecting extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); //do something } @Override protected String doInBackground(String... aurl) { try { URL url = new URL(URLPath); connection = (HttpURLConnection)url.openConnection(); connection.setConnectTimeout(30000); connection.setReadTimeout(30000); connection.setDoInput(true); connection.setUseCaches(false); connection.connect(); is = connection.getInputStream(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String unused) { super.onPostExecute(unused); //access InputStream is } } 

Conexión puede pasar mucho tiempo en conectar.
Mientras que la conexión, quiero fijar el Bbutton btn se presiona para parar la conexión conectar.
¿Cómo puedo establecer en el método setOnClickListener?

  • Android: java.net.protocolException no admite salida
  • Error android, httpurlconnection
  • HttpUrlConnection no encuentra el reto de NTLM en Android
  • HttpUrlConnection de Android: Publicar Multipart
  • Usando HttpURLConnection y HttpsURLConnection para conectarse a un https?
  • HttpURLConnection de Android: controla los redireccionamientos de HTTP
  • Enviando cadena UTF-8 usando HttpURLConnection
  • Java.io.IOException: No se han encontrado problemas de autenticación
  • One Solution collect form web for “Cómo detener HttpURLConnection conectar en Android”

    Envuelva el código que utiliza HttpURLConnection dentro de un Future , que puede cancelar a voluntad. También puede utilizar la función de tiempo de espera del Future , ya que los tiempos de espera en HttpURLConnection no son fiables.

    Defina un ejecutor y futuro dentro de su clase de redes:

     final ExecutorService executor = Executors.newCachedThreadPool(Executors.defaultThreadFactory()); Future<MyResult> future; 

    A continuación, envuelva su código de red dentro del Future como este:

     future = executor.submit(new Callable<MyResult>() { @Override public MyResult call() throws IOException { HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); try { // .. use the connection ... } finally { connection.disconnect(); } } }); MyResult result = future.get(TIMEOUT, TimeUnit.SECONDS); 

    Cuando desee cancelar, puede realizar esta llamada desde cualquier subproceso:

     future.cancel(true); 

    Si el futuro se agota o se cancela, la tarea de conexión puede continuar bloqueando en un método HttpURLConnection , pero su aplicación no se HttpURLConnection . Debería establecer los tiempos de espera adecuados en la conexión para acelerar la liberación de subprocesos de red y de red.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.