Wie entferne ich alle Benachrichtigungen, wenn eine Android-App (Aktivität oder Dienst) beendet wird?

7

Ich habe eine App mit einer Aktivität und einem Intent-Dienst im Hintergrund.

Es gibt auch eine Benachrichtigung, die einen Fortschrittsbalken mit dem Fortschritt des Hintergrundprozesses anzeigt (es werden viele Dateien von einem Server heruntergeladen).

Die Aktivität enthält den Download-Fortschritt (der Benutzer kann die App nicht sinnvoll nutzen, bevor diese heruntergeladen werden). Wenn diese Aktivität geschlossen wird, wird die Benachrichtigung mit der Fortschrittsleiste angezeigt.

Mein Problem: Wenn die Anwendung über den "Task-Manager" (erreichbar über die rechte Taste auf Android 4.0, der mit den zwei Rechtecken) beendet wird, ist die Benachrichtigung immer noch da. Aber es ist im Grunde ein Zombie, weil der Dienst, der es aktualisiert hat, tot ist.

Anders ausgedrückt: Wie kann ich eine (oder alle) Benachrichtigung (en) entfernen, wenn meine Anwendung beendet wird?

    
treesAreEverywhere 05.03.2014, 21:57
quelle

4 Antworten

20

@Siehe public void onTaskRemoved (Intent rootIntent) . Dies wird aufgerufen, wenn der Dienst gerade ausgeführt wird und der Benutzer eine Aufgabe aus der Anwendung des Dienstes entfernt hat. Wenn Sie ServiceInfo.FLAG_STOP_WITH_TASK flag gesetzt haben, erhalten Sie diesen Rückruf nicht; Stattdessen wird der Dienst einfach gestoppt.

Sie können alle Benachrichtigungen, die Ihre App erstellt hat, mit cancelAll() :

%Vor%

Gemäß den API-Dokumenten wird dies

sein
  

Alle zuvor angezeigten Benachrichtigungen abbrechen.

auf dieselbe Weise wie cancel(int id) :

  

Bricht eine zuvor angezeigte Benachrichtigung ab. Wenn es vorübergehend ist, wird die Ansicht ausgeblendet. Wenn es dauerhaft ist, wird es aus der Statusleiste entfernt.

    
AZ_ 22.10.2014, 12:09
quelle
3

Es scheint, dass

onTaskRemoved

des Dienstes wird aufgerufen, wenn der Benutzer den Anwendungs-Task beendet (indem er die App im "Task-Manager" auswischt). Ich kann die Benachrichtigung von hier entfernen.

    
treesAreEverywhere 06.03.2014 12:26
quelle
0

Sie können nicht verfolgen, ob die Anwendung aus der Aktivitäts- oder Anwendungsklasse gelöscht wurde.

Ich habe dafür eine Lösung in folgendem Link gefunden: Benachrichtigung beim Entfernen der Anwendung vom Multitask-Panel abbrechen

Bitte versuchen Sie es.

    
MithunRaj 09.11.2015 08:55
quelle
-1

Haben Sie onStop ausprobiert? Es hat für mich funktioniert. Ich habe cancelAll () in onStop aufgerufen. Es schließt alle Benachrichtigungen beim Entfernen der App vom Task-Manager.

Hinweis: Aber es entfernt auch alle Benachrichtigungen, wenn Ihre App im Hintergrund läuft. In diesem Fall können Sie diese Benachrichtigung mit Hintergrundprozess erneut aufrufen.

%Vor%     
vineetv2821993 24.10.2015 07:31
quelle

Tags und Links