在提出PRIORITY_MAX通知后隐藏前台服务的状态栏通知图标

时间:2014-02-03 10:20:29

标签: android android-notifications android-notification-bar

首先,执行此操作(在运行4.4.2的Nexus 5上测试):

  • 将PRIORITY_LOW通知传递给Service.startForeground()。
  • 观察通知未显示在状态栏中。
  • 使用相同的通知ID提升PRIORITY_MAX通知。
  • 观察通知显示在状态栏中。

现在,有没有办法从状态栏中删除该图标(Service.stopForeground()除外)?

我尝试过调用NotificationManager.cancel()和NotificationManager.cancelAll()。并且还尝试提高相同的原始PRIORITY_LOW通知。但是所有这些都将通知图标留在状态栏中。

2 个答案:

答案 0 :(得分:2)

在Android 4.3中进行了更改,以便始终显示前台服务的通知。

这是有充分理由的,即当系统需要更多资源时,前台服务无法被杀死。如果通知不存在,普通用户无法知道有什么东西在运行并且正在耗尽电池。

如果您不想要通知,请考虑使用后台服务。如果您确实需要前台服务,则用户有权知道。

详细了解http://commonsware.com/blog/2013/07/30/notifications-foreground-services-android-4p3.html

答案 1 :(得分:0)

一种解决方法是拨打Service.stopForeground(),然后拨打Service.startForeground()