如何防止应用程序在后台被杀死?

3
在我的华为P20 Lite(Android 9)上,有一个设置电源使用详情 -> 应用程序启动 -> "自动管理"。启用此设置后,我注意到当应用程序处于后台时,操作系统有时会关闭它。

enter image description here

该应用充当流媒体服务器。
是否可以通过编程方式禁用“自动管理”并启用“后台运行”设置?
编辑:我注意到像Deezer或Spotify这样的知名应用程序不请求忽略电池优化,并且在后台播放音乐时从未被杀死。有人知道他们是如何实现的吗?

1
不,你不能改变操作系统的行为,但是你总可以创建一个黏性服务来保持执行任务的状态,即使应用被关闭。有时候操作系统也会自动杀死服务,为了解决这个问题,使用自启动权限和前台服务。 - Mr. Patel
1
这可能会有所帮助 https://dontkillmyapp.com/ - Ivan Wooll
1
我会把这个留在这里,因为它总是一个有趣的阅读材料:https://dontkillmyapp.com/ - Nikos Hidalgo
非常有趣的阅读,特别是关于华为的PowerGenie,它可以杀死不在其白名单上的应用程序。 - matdev
1个回答

1
在您的应用程序中实现“前台服务”,以增加操作系统中组件的优先级,从而降低其被终止的可能性。

3
你无法完全避免它的发生。最多只能降低它发生的可能性。 - Tim
我接受你的答案...为了完整起见,似乎使用永久通知并将其重要性设置为NotificationManager.IMPORTANCE_HIGH也有助于降低应用程序被杀死的几率。 - matdev
@matdev,你成功避免了应用程序被杀死吗?除了设置NotificationManager.IMPORTANCE_HIGH之外,还有其他的设置有帮助吗? - Cilvet
如果操作系统决定这样做,你无法完全避免你的应用程序被后台杀死,你只能降低这种情况发生的可能性。你是否考虑使用 JobIntentService 代替前台服务? - matdev
我也遇到了这个问题(在华为P Smart上进行测试),但将其实现为前台服务是不够的。例如,三星健康应用程序作为前台服务确实可以工作,但它仍然会被P Smart杀死。我找不到其他方法,只能手动通过常规路径“设置>电池>应用启动>手动管理”来解决。 - Franco
如何将此答案标记为已接受?的确,像Spotify这样的应用程序使用前台服务,但是如果您的应用程序不需要它,仅仅为了防止被杀而创建一个虚假的前台服务并不是一种可接受的解决方案(尽管这确实很烦人!)。 这只是一个坏的技巧。 - Cyril

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