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


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


现在,有什么方法可以从状态栏中删除该图标(Service.stopForeground()除外)?

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

最佳答案

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

这样做有一个很好的理由,即当系统需要更多资源时,前台服务不能被杀死。如果没有该通知,则普通用户无法知道仍有东西在运行并且正在耗尽电池。

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

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

10-02 09:17
查看更多