HTTP Async Downloader con auto-resume en error

Tengo un descargador asíncrono en mi aplicación, pero a veces la conexión se pierde, especialmente cuando estoy en una conexión móvil y si el archivo es grande (> 10 MB). ¿Hay una manera de atrapar cuando una descarga se detiene y luego obligarla a reanudar con el resultado de completar la descarga?

Esta es la tarea asíncrona doInBackground :

 protected String doInBackground(String... aurl) { int count; try { URL url = new URL(aurl[0]); URLConnection conexion = url.openConnection(); // conexion.setRequestProperty("Range", "bytes=" + downloaded + "-"); conexion.connect(); int lenghtOfFile = conexion.getContentLength(); pesoVideo = lenghtOfFile / 1048576; output = "/sdcard/" + folderString + "/" + nomeFile + ".mp3"; InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream( VideoDownloaderBrowserActivity.this.output); byte data[] = new byte[1024]; long total = 0; while ((count = input.read(data)) != -1) { total += count; publishProgress("" + (int) ((total * 100) / lenghtOfFile)); output.write(data, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e) { } return null; } 

Este es el onProgressUpdate :

 protected void onProgressUpdate(String... progress) { if (Integer.parseInt(progress[0]) > progresso) { ... } } 

Aquí hay un hilo discutiendo la descarga resumible en Android bajo API 9. De lo contrario DownloadManager es una buena opción también para las versiones más recientes.

Básicamente es necesario habilitar la función de bytes en su servidor para permitir la descarga reanudable.

  • ¿Existe un Java / Android equivalente a la función iOS "componentsJoinedByString" para un NSArray?
  • Abrir un proyecto en Eclipse
  • Android: Pasar un servicio a un manejador
  • Cómo obtener un mensaje de devolución de servicio de Android desde un plugin de teléfono
  • Android BLE: ¿Identificar el tipo de característica?
  • Enviar correo electrónico mediante programación en Android
  • ¿Cómo puedo recuperar el tamaño de un archivo durante la descarga de una URL (mediante una conexión http)?
  • Android rxJava Manejo de errores con retroadaptación
  • Evitar que RecyclerView muestre contenido anterior al desplazarse
  • ¿Problemas comunes de rendimiento en Android?
  • Obtener un objeto JSON desde una respuesta HTTP
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.