¿Cómo se puede detener a un diálogo de progreso se ejecuta cuando el acceso a la red cae?

StackOverflow https://stackoverflow.com/questions/4367936

  •  09-10-2019
  •  | 
  •  

Pregunta

Tengo una aplicación que va dirigida a un sitio web para agarrar XML para su procesamiento. Este proceso está en un hilo separado y funciona bien cuando tengo 3G o WiFi disponible. También tengo código que comprueba la señal antes de que realmente ejecuta el hilo por lo que no intentará con hay conectividad .

Durante mis pruebas, entré en un edificio que bloquea todas las señales por lo que el proceso se inició mientras yo estaba fuera y tenía señal, pero cuando fui dentro de la señal de caer y mi Progreso de diálogo acaba de mantenerse en funcionamiento, tuve que cerrar manualmente el programa de abajo para conseguir que se recupere.

¿Hay una buena manera de lidiar con esto sin que el usuario tenga cerrar manualmente la aplicación, si esta situación ocurre?

¿Fue útil?

Solución

Supply timeout parameters to your HttpClientand catch SocketTimeOutException

HttpParams httpParams=new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
HttpClient httpClient=new DefaultHttpClient(httpParams);
try {
    httpClient.execute(new HttpGet("http://myserver.xml"));
}
    catch(SocketTimeoutException ex){
        //Perform Timeout i.e. cancle progress dialog
    }
    catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top