Issue
I have an app with an activity and an intent service running in the background.
There's also a notification which shows a progress bar with the progress of the background process (it's downloading a lot of files from a server).
The activity shows the download progress ( user can't meaningfully use the app before these assets are downloaded). When this activity is closed, the notification with the progress bar is shown.
My issue: When the application is killed via the "task manager" (accessible via right button on android 4.0, the one with the two rectangles), the notification is still there. But it's basically a zombie, because the service that used to update it is dead.
Put in a different way: How can I remove a (or all) notification(s) when my application is killed?
Solution
@See
public void onTaskRemoved(Intent rootIntent).
This is called if the service is currently running and the user has removed a task that comes from the service's application. If you have set ServiceInfo.FLAG_STOP_WITH_TASK
flag then you will not receive this callback; instead, the service will simply be stopped.
You can remove all notifications that your app has created with cancelAll()
:
NotificationManager nManager = ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE));
nManager.cancelAll();
According to the API docs, this will
Cancel all previously shown notifications.
in the same way that cancel(int id)
does:
Cancel a previously shown notification. If it's transient, the view will be hidden. If it's persistent, it will be removed from the status bar.
Answered By - AZ_
Answer Checked By - Marie Seifert (JavaFixing Admin)