我正在开发一个需要不断显示通知的应用程序 我的服务是每隔一秒显示一次通知 当资源不足时,android会杀死我的服务 我从onStartCommand()获得了返回START_STICKY 所以一段时间后服务重新启动 但同时通知看起来停止了。
我在某个地方红了,显示通知的服务可能无法被android停止。我得到了任何一个例子。
答案 0 :(得分:6)
使用
startForeground(int,Notification);
在onCreate of service。它需要一个通知编号和一个通知对象,它将显示在通知栏中。
要删除通知,请使用
startForeground(0,Notification);
答案 1 :(得分:4)
如上所述,您需要使用startForeground(int,Notification)
方法向用户了解您的服务。它也获得了更多的特权。
您可以阅读更多相关内容here(内部示例)。
答案 2 :(得分:2)
没有办法完全阻止它被杀死。使其成为前台服务有助于。返回start_sticky意味着如果它被停止将重新启动(因此它应该在其onCreate中对其自身执行startService以确保它重新启动而不仅仅是重新创建)。但由于资源的原因,Android有权随时终止任何服务。
答案 3 :(得分:1)
您可以在方案中使用Foreground Service。来自文档:
前台服务是一种服务,被认为是用户积极意识到的东西,因此在内存不足时不会成为系统杀死的候选者。前台服务必须为状态栏提供通知,该通知位于"正在进行的"标题,这意味着除非服务被停止或从前台删除,否则不能解除通知。
据我所知,没有防止你的服务被android系统阻止的防弹方法。如果设备对内存/资源至关重要,则必须停止GC的服务。建议不要这样做,因为您的服务会耗尽设备电池。