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?
@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()
:
Gemäß den API-Dokumenten wird dies
seinAlle 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.
Es scheint, dass
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.
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.
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%Tags und Links android service notifications