Löschen Sie die Benachrichtigung in der Statusleiste, nachdem die Anwendung abgestürzt ist

8

In meiner Anwendung laufen mehrere Dienste. Wenn Benutzer die Anwendung stoppen (UI-Teil), bleiben die Dienste im Hintergrund aktiv und zeigen Benachrichtigungen (jeder Dienst hat einen) in der Statusleiste an. Wenn Sie darauf klicken, erscheint der Dialog mit der Auswahl, um den entsprechenden Dienst zu beenden.

Und hier ist mein Problem. Wenn etwas schief läuft und die Anwendung abstürzt, bleiben die Benachrichtigungen im Statusleistenbereich erhalten. Ist es möglich, alle Benachrichtigungen zu löschen, bevor der standard android force close-Dialog angezeigt wird?

Der eigentliche Fehler ist NPE, wenn ich versuche, die Aktivität zu öffnen und auf die Benachrichtigung zu klicken. Es ist repariert. Aber ich möchte nur wissen, wie man alles löscht, wenn die Anwendung abstürzt.

Hier ist meine letzte Lösung, inspiriert von der Post der Maus. In der Anwendung in create-Methode registriere ich Thread.setDefaultUncaughtExceptionHandler ()

%Vor%

Danke

    
pcu 30.09.2011, 06:42
quelle

2 Antworten

6

Sie können

anrufen

Thread.setDefaultUncaughtExceptionHandler ()

mit einem Handler, der aufgerufen wird, wenn eine Ausnahme nicht von Ihrer App im Thread behandelt wird. Dieser Handler wird aufgerufen, wenn Thread aufgrund einer unbehandelten Ausnahme abstirbt.

Hier würden Sie Aufräumarbeiten durchführen.

Genau so wird die ACRA Crash-Reporting-Bibliothek abstürzen.

    
Pointer Null 30.09.2011, 07:30
quelle
3

Als Erstes müssen Sie sicherstellen, dass Ihr application should not get crashed at any cost und Ihre Frage beantworten, Sie sollten onDestroy() -Methode des Dienstes überschreiben und die Benachrichtigung dort abbrechen, da sie in beiden Fällen funktioniert, wenn der Dienst stoppt oder abstürzt .

Da Sie onDestroy() nicht im Fall von crash verwenden können, müssen Sie try catch block eingeben und nach dem Auslösen die entsprechende Aktion ausführen.

    
Vineet Shukla 30.09.2011 06:52
quelle

Tags und Links