Android – DownloadManager – Borrar descargas antiguas en cola

Estoy construyendo una aplicación que necesita saber por razones de concurrencia si todas las descargas están terminadas. Una determinada función sólo se permite iniciar cuando todas mis descargas están terminadas.

Me las arreglé para escribir una función que comprueba la cola de descargas de edad:

DownloadManager dm = (DownloadManager) context.getSystemService(context.DOWNLOAD_SERVICE); Query q = new Query(); q.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PENDING|DownloadManager.STATUS_RUNNING); Cursor c = dm.query(q); 

El problema es que – sólo para estar seguro – en la inicialización quiero limpiar la cola y eliminar todas las entradas.

¿Alguna idea de cómo puedo ahora eliminar las entradas?

Esta función no funcionó para mí porque no quiero eliminar físicamente los archivos … sólo vacía la cola.

¿Algunas ideas?

¿Puedes esperar a que DownloadManager termine solo tus descargas? Para lograr esto, puede guardar las manejadas de sus descargas con algo como esto:

 List<Long> downloadIds = new ArrayList<>(); downloadIds.add(downloadManager.enqueue(request)); 

A continuación, puede consultar el downloadManager de esta manera:

  Query q = new Query(); long[] ids = new long[downloadIds.size()]; int i = 0; for (Long id: downloadIds) ids[i++] = id; q.setFilterById(ids); Cursor c = downloadManager.query(q); Set<Long> res = new HashSet<>(); int columnStatus = c.getColumnIndex(DownloadManager.COLUMN_STATUS); while (c.moveToNext()) { int status = c.getInt(columnStatus); if (status != DownloadManager.STATUS_FAILED && status != DownloadManager.STATUS_SUCCESSFUL) { // There is at least one download in progress } } c.close(); 

Tenga en cuenta que esto puede funcionar si usted está interesado sólo en sus propias descargas, no todas las descargas posibles que pueden ocurrir en todo el sistema.

Espero que esto ayude.

Si no desea eliminar físicamente los archivos, puede hacer una copia de seguridad antes de llamar a la función de eliminación de DownloadManager. No es una solución elegante pero no puedo encontrar ninguna otra manera

  • Cómo capturar el evento de volver a una actividad después de golpear de nuevo
  • Adición de reglas personalizadas de pelusa
  • Cómo obtener el modo de permiso de archivo mediante programación en Java
  • Patrones de diseño de Retrofit de Android
  • ¿Por qué el botón Atrás no funciona en esta vista web de Android?
  • UnsatisfiedLinkError (Método nativo no encontrado)
  • No se puede iniciar Android Studio
  • ¿Cómo emular a los productFlavors de Android en un módulo de Java gradle puro?
  • Fuera de error de memoria: Java heap memory en Android Studio
  • ¿Hay una manera de sobrecargar JSONArray para comportarse como una lista regular en un bucle?
  • Cómo crear UUID al azar en Android cuando el botón haga clic en evento sucede?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.