descomprimir descargar como archivos archivo androzip abrir android download

android - descargar - SocketException durante la descarga de archivo zip de gran tamaño



winrar (5)

Estoy descargando un archivo zip de gran tamaño del servidor. Me estoy siguiendo

06-11 21:45:18.789: I/System.out(8993): java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)

Mi aplicación no se detiene, pero mi descarga se detiene. Esto sucede en hdpi android mobile específicamente diciendo que los dispositivos con bajo procesador. La descarga funciona bien en S3 y tabletas. Estoy usando el método simple FileOutputStream para descargar el archivo.


Si está usando HttpConnection, entonces aumente el tiempo de espera

HttpURLConnection con = (HttpURLConnection) url.openConnection ();

con.setReadTimeout (10000);

O

HttpConnectionParams.setSoTimeout (httpParameters, 10000); //


Supongo que deberías adquirir WakeLock para finalizar tu descarga y luego liberarla. Especialmente, si está descargando un archivo grande a través de una conexión Wi-Fi, es típico adquirir WifiLock para mantener la radio encendida.

Por otro lado, podrías (si aún no lo hiciste) probar también DownloadManager . Como dice este artículo oficial sobre wakelocks ,

" Si su aplicación está realizando descargas HTTP de larga ejecución, considere usar DownloadManager " .


Para trabajar con un servidor HTTP recomiendo encarecidamente la biblioteca Loopj , es una biblioteca confiable, simple y fácil de usar. como la documentación dice que puedes descargar un archivo simplemente así:

AsyncHttpClient client = new AsyncHttpClient(); String[] allowedContentTypes = new String[] { "image/png", "image/jpeg" }; client.get("http://example.com/file.png", new BinaryHttpResponseHandler(allowedContentTypes) { @Override public void onSuccess(byte[] fileData) { // Do something with the file } });



No estoy seguro de que este sea el problema, pero es una posibilidad. Dice que esto sucede en dispositivos de procesador bajo, puede ocurrir que la velocidad de bits ascendente de los servidores remotos sea tan grande que la tasa de bits descendente del cliente no pueda manejarlo, y como esto sucede con archivos grandes, después de un cierto tiempo, el dispositivo receptor puede maneja la velocidad de bits, el Socket colapsa y obtienes ese tiempo de espera.

Mi sugerencia es tratar de implementar un limitador de frecuencia de banda ancha. De esta forma, puede probar si los dispositivos lentos responden mejor a esas descargas largas, aunque serán más lentos.