¿Cómo eliminar todas las notificaciones cuando se cancela una aplicación de Android (actividad o servicio)?

Tengo una aplicación con una actividad y un servicio de intenciones que se ejecutan en segundo plano.

También hay una notificación que muestra una barra de progreso con el progreso del proceso en segundo plano (descarga muchos archivos de un servidor).

La actividad registra el progreso de la descarga (el usuario no puede utilizar la aplicación significativamente antes de descargarlos). Cuando se cierra esta actividad, se muestra la notificación con la barra de progreso.

Mi problema: cuando se cancela la aplicación a través del "administrador de tareas" (accesible a través del botón derecho de android 4.0, el que tiene los dos rectángulos), la notificación sigue estando allí. Pero básicamente es un zombie, porque el servicio que se utiliza para actualizarlo está muerto.

De una manera diferente: ¿Cómo puedo eliminar una notificación (o todas) cuando se cancela la aplicación?

@ Ver public void onTaskRemoved (Intención rootIntent) . Esto se llama si el servicio está en ejecución y el usuario ha eliminado una tarea que viene de la aplicación del servicio. Si ha establecido el indicador ServiceInfo.FLAG_STOP_WITH_TASK , no recibirá esta devolución de llamada; En su lugar, el servicio simplemente se detendrá.

Puedes eliminar todas las notificaciones que tu aplicación ha creado con cancelAll() :

 NotificationManager nManager = ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)); nManager.cancelAll(); 

Según los documentos de la API, esto

Cancelar todas las notificaciones mostradas anteriormente.

De la misma manera que cancel(int id) :

Cancelar una notificación mostrada anteriormente. Si es transitorio, la vista se oculta. Si es persistente, se eliminará de la barra de estado.

Parece que

OnTaskRemoved

Del servicio se llama cuando el usuario mata la tarea de la aplicación (mediante la eliminación de la aplicación en el "administrador de tareas" .Soy capaz de eliminar la notificación de aquí.

No se puede realizar el seguimiento si la aplicación se ha eliminado de la clase Actividad o Aplicación.

Encontré una solución para esto en el siguiente enlace: Cancelar la notificación de la eliminación de la aplicación del panel multitarea

Por favor, pruebe esto.

¿Has probado onStop ? Funcionó para mí. Llamé a cancelAll () en onStop. Cierra todas las notificaciones de eliminación de la aplicación del Administrador de tareas.

Nota: también se eliminan todas las notificaciones cuando la aplicación entra en segundo plano. En ese caso, puede volver a invocar la notificación mediante el proceso en segundo plano.

 @Override public void onStop (){ super.onStop(); cancelAllNotification(getApplicationContext()); } public static void cancelAllNotification(Context ctx) { String ns = Context.NOTIFICATION_SERVICE; NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns); nMgr.cancelAll(); } 
  • ¿Hay una alternativa onBackPressed () para un servicio?
  • Depurar servicio de fondo en android utilizando intelliJ
  • Recolector de datos de sensor de fondo en Android
  • ¿Puede existir un servicio de fondo sin su aplicación principal?
  • Cómo pasar valor de cadena de servicio a la actividad en android?
  • Descubrimiento del servicio de red error de tutorial android: Servicio perdido, el teléfono se desactiva
  • Android - Ejecutar en segundo plano - Service vs. standard java class
  • Servicio de Android: onBind (Intención) y onUnbind (Intención) se llama una sola vez
  • NotificationCompat y setFullScreenIntent ()
  • Android: mantener el servicio en ejecución cuando se mata la aplicación
  • Obtener ubicación GPS a través de un servicio en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.