8

When you have the Messages Activity open and the phone receives a new message a notification is shown on the status bar. After a short amount of time the notification is removed.

Is it possible to do the same for my activity without using a timer to clear the notification after a few seconds?

rds
  • 26,253
  • 19
  • 107
  • 134
benshort
  • 670
  • 8
  • 14

2 Answers2

12

I don't believe there's a way to use the NotificationManager only to cancel a notification, but you can do it with a simpler Handler. Put some code like this right after you fire your notification.

Handler h = new Handler();
long delayInMilliseconds = 5000;
h.postDelayed(new Runnable() {
    public void run() {
        mNotificationManager.cancel(YourNotificationId);
    }
}, delayInMilliseconds);
ashatte
  • 5,442
  • 8
  • 39
  • 50
Rich
  • 36,270
  • 31
  • 115
  • 154
  • Out of interest Why use a Handler rather than a Timer? – benshort Feb 14 '11 at 21:49
  • 2
    I don't know the inner workings of the classes enough to have a real reason, it's just an instinctive thing since you need something that runs once. The Timer can be used to run once, but it can also be used to run repeatedly. I always think of the Handler as something that runs one time when you tell it to, and that was your use case so it made sense to me. – Rich Feb 15 '11 at 18:02
4

Well there is NO need of a Handler/Service while the Notification.Builder has the method .setTimeoutAfter(long milliseconds):

Hence just call:

builder.setTimeoutAfter(time_in_milliseconds);

For more Information see setTimeoutAfter(long).

Xenolion
  • 12,035
  • 7
  • 33
  • 48