5

我正在寻求停止/关闭媒体播放器服务的前台通知,这与Google针对Google音乐的实施非常相似。如何删除Android棒棒糖中的前景通知?

例如在Google音乐中,如果您正在播放音乐,则无法删除通知。但是,如果您暂停音乐,它可以。

这与Android 4.4的实现方式完全不同,其中通知仅在您离开应用程序时启动,并在您重新进入应用程序时自动删除。我无法看到如何实现这一点,无论是考虑服务的要求来通知。

任何帮助将不胜感激。

回答

7

如何在Android Lollipop中删除前景notifiactio?

您可以通过调用您的Service调用startForeground()stopForeground()删除自己的前景Notification

例如,在Google音乐中,如果您正在播放音乐,则通知无法被删除。但是,如果您暂停音乐,它可以。

根据音乐是否播放,他们正在更新NotificationsetOngoing()值。

+0

所以这个想法是,如果你回来的应用程序,那么没有必要有一个通知运行,因为你实际上使用的应用程序? Google在Android Lollipop中使用Google音乐的方式不同,无论您是否在应用程序中,通知始终都会运行。我知道这可能是一件微不足道的事情,但在开发我的应用程序时,我遇到了它并想更好地理解为什么。并感谢您的答复,非常感谢。 – 2014-10-28 10:44:24

+2

@DumonKri:如果您的用户界面位于前台,前台服务不会为您的进程优先级添加任何内容。而且,如果您的用户界面位于前台,用户可能有更好的方式通过该用户界面与您的应用进行交互,而不是通过“通知”进行交互。 – CommonsWare 2014-10-28 10:51:08

+0

谢谢@CommonsWare,这显然是有道理的。谷歌在Android 4.4和5版本中的谷歌音乐本身就以不同的方式实施它,这让我感到困惑。也许它会随着Lollipop应用程序的更新而改变。 – 2014-10-29 11:16:29

3

您也可以删除一个棘手的方式通知:

  • 开始第一次服务与startForeground(1, new Notification());
  • 开始第二服务,startForeground(1, new Notification());并立即停止其

结果第一个服务仍然在前台运行,但通知已停止,谢谢停止第二项服务。我意外发现它:)。

+0

这是一个很棒的技巧,但不幸的是它已经在Android 7.1中进行了修补。 – Sam 2016-12-09 17:51:49