几秒钟后清除通知

8

当您打开消息活动并且手机接收到新消息时,状态栏上会显示通知。经过短暂的时间后,通知将被删除。

是否可能在不使用计时器清除通知的情况下对我的活动执行相同的操作?

2个回答

12

我不认为有一种方法可以仅使用NotificationManager取消通知,但您可以使用更简单的Handler完成。在触发通知后,请放置类似以下代码的内容。

Handler h = new Handler();
long delayInMilliseconds = 5000;
h.postDelayed(new Runnable() {
    public void run() {
        mNotificationManager.cancel(YourNotificationId);
    }
}, delayInMilliseconds);

有趣的是,为什么要使用Handler而不是Timer? - benshort
2
我不太了解这些类的内部工作原理,所以没有真正的理由,只是本能地认为你需要运行一次的东西。计时器可以用来运行一次,但也可以用来重复运行。我总是把处理程序看作是在告诉它运行一次时运行一次的东西,而这正是你的用例,所以对我来说很有意义。 - Rich

4

Notification.Builder有方法.setTimeoutAfter(long milliseconds)时,就不需要使用Handler/Service:

因此只需调用:

builder.setTimeoutAfter(time_in_milliseconds);

For more Information see setTimeoutAfter(long).


1
我不知道为什么这不是被接受的答案。 - Lukas Fink
如果用户没有与通知进行交互并且它超时,我想执行一个操作怎么办? - Alhanoof
你可能需要一个倒计时器。如果等待时间太长,可以显示前台服务通知,例如@lolowa。 - Xenolion
1
注意:在 O 版本之前(API v26),它是无操作的。 - Amir Hossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接