前台服务无通知

4
我想开启一个前台服务,但不显示通知, 像Instagram、Telegram、Zapya等应用程序都有一个前台服务,但它们不显示通知。 我已经尝试了类似于这里的答案,但Android会显示一个通知,显示yourAppName正在运行。 我想知道如何实现没有来自操作系统的前台服务通知或警告?

1
根据您分享的链接,被接受的答案建议操作系统避免没有通知的前台服务。 - Rahul
另外,您是如何确定所提到的应用正在运行前台服务的? - Sam
@Sam 如果您在Android设置中检查正在运行的应用程序,您可以看到一些来自提到的应用程序的服务,但当然没有通知。 - Mahdi-Malv
@Skillson,我可能错了,但是我认为后台服务也会在那里显示。我相信这个方法 是一种非常准确的方式来确定服务是否请求在前台运行。 - Sam
1
嗯,很难说。为了计时而在后台运行前台服务听起来对资源的浪费。你可以在暂停/重新启动时,将运行总数存储在某个永久位置(例如SharedPreference)并根据需要进行更新,而无需使用服务吗?如果您提供更多关于您要做什么的详细信息,可能更容易解决问题,建议您提出单独的问题。此外,StackOverflow并不适合获取有关如何执行操作的意见,因此我不能保证您将得到多少帮助。 :) - Sam
显示剩余6条评论
2个回答

0
一般来说,你不能在没有通知的情况下定义前台服务。然而,用户可以隐藏应用程序的通知,所以你可以询问,但如果服务启动时没有通知,操作系统会认为需要停止服务,并尽快将其杀掉。
总之,对于后台任务执行,Android WorkManager 是最新和最可靠的选择,值得使用。

我认为WorkManager无法完全替代后台服务。后台服务不能提供“保证”执行。 - stdout
是的,实际上,如果您不想显示通知并启动服务(并且不希望您的服务被终止),那么您没有太多选择。要么使用Alarm Manager,要么使用WorkManager。但当然,WM不能在所有情况下替代后台服务。 - Mahdi-Malv

0

如何做到这一点

以下是一种最新的技术,可使其在所有Android版本上运行:

  • 当应用程序在Android 7.1之前的版本上运行时,请使用this technique
  • 当应用程序在Android 7.1或更高版本上运行时,请使用this technique

我知道这比你想象中的工作要多,但根据我的经验,它确实有效。


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