Android Oreo持续通知"应用程序在后台运行"

Smi*_*les 6 android android-notifications android-8.0-oreo

我是一名Android应用开发者,正在开发即时消息应用.该应用在Android Oreo系统上存在通知问题,该系统显示持续通知"应用程序在后台运行"并且无法清除,并且在Android Oreo之前系统正常.

屏幕截图:手机显示持久通知应用程序正在后台运行

我找到了一些讨论,例如关于这个问题的Nexus帮助论坛,但它在我的手机设置中不起作用.

我想知道如何以编程方式隐藏此通知,该应用程序也可以立即接收消息,因为它是一个即时消息应用程序.

非常感谢任何帮助.

Com*_*are 5

该应用程序在Android Oreo系统上有一个通知问题,显示持续通知“应用程序在后台运行”并且无法清除,在Android Oreo之前的系统上是可以的。

您使用startForeground()了 minimum-importance Notification

我想知道如何以编程方式隐藏此通知

startForeground()Notification具有高于最低重要性的a 一起使用。或者,不要使用startForeground().

我发现一些安装消息应用程序如微信,Facebook 在 Android Oreo 上没有这个问题

据推测,他们没有使用前台服务。例如,他们可能正在使用 Firebase Cloud Messaging (FCM)。

  • @CommonsWare 我有一个名为 startForeground 的服务,并将其添加到 IMPORTANCE_LOW(高于 min)的频道中。然而,无论我做什么,系统“应用程序正在后台运行”通知仍然显示。这让我怀疑,是否真的有正确的配置可以删除系统通知?根据官方文档(https://developer.android.com/reference/android/app/NotificationManager.html#IMPORTANCE_MIN),只要我选择高于 min 的重要性级别,系统通知就不会显示(我做了) (3认同)

小智 2

然而,在我们讨论如何摆脱它之前,让\xe2\x80\x99s 首先谈谈为什么它\xe2\x80\x99s 在那里。

\n\n

基本上,在以前版本的 Android 中,没有真正的方法可以知道应用程序是否在后台运行,执行一些它\xe2\x80\x99s 不应该执行的操作。在大多数情况下,这些行为不当的应用程序会通过保持系统唤醒来对电池造成严重破坏\xe2\x80\x94这些被称为\xe2\x80\x9cwakelocks。\xe2\x80\x9d通俗地说\xe2\x80\x99s,它阻止系统休眠。那\xe2\x80\x99 很糟糕。

\n\n

通过奥利奥,谷歌正在号召开发者让他们的应用程序通过新的通知来做这样的事情。本质上,如果应用程序在后台运行并消耗电池寿命,这个新通知会告诉您。

\n\n

注意:在一些合法的情况下,应用程序会在后台持续运行,例如 VPN 服务正在运行。然而,应用程序常常不合理地在后台运行。

\n\n

不过,值得注意的是,删除通知并不能解决问题。时期。此通知存在的原因是\xe2\x80\x99,删除它并不能解决根本问题。您\xe2\x80\x99将需要更改应用程序内的设置或完全卸载它。

\n\n

只要你明白这一点,并且仍然想删除它,就让\xe2\x80\x99s来做这件事。\n因为这是一个相对重要的系统设置,\xe2\x80\x99s在Oreo本身中没有办法删除它。这就说得通了。

\n\n

但与大多数事情一样,开发者社区已经找到了删除它的方法,开发者 iboalali 发布了一个应用程序来做到这一点。它\xe2\x80\x99s实际上只是调用\xe2\x80\x9c隐藏\xe2\x80\x98在后台运行\xe2\x80\x99通知,\xe2\x80\x9d这就像应用程序名称一样简单是。继续安装吧。

\n\n

如果没有 root,就无法真正阻止 Android 系统在 Android 8.0 Oreo 中显示持久的 \xe2\x80\x9capp is running in the background\xe2\x80\x9d 通知。查看 ForegroundServiceController 的源代码、其实现和 ForegroundServiceDialog 并没有真正揭示我们可以利用的任何内容。到目前为止,还没有发现任何程序性的东西。

\n\n

这是一篇可以帮助您的博客文章

\n