完全禁用Doze模式和待机模式是否可行?

5
我有一个需求,需要创建一个应用程序,它应该可以24/7运行。我不在意电池的消耗,因为这个应用程序不会被提交到PlayStore,只针对特定用户。我也明白这个应用程序只会持续一天,这在我的情况下是可以接受的。
应用程序的功能主要依赖于网络和蓝牙功能,大部分代码都是在marshmallow之前编写的,现在改变整个实现不是一个正确的选择。
那么有没有办法创建应用程序而不受任何限制呢?此外,观察到一些设备制造商增加了额外的电池优化层,使情况更糟。
我尝试创建一个虚拟的前台服务,使用partial wakelock,但这似乎不起作用。即使将应用程序列入白名单也无法解决问题。
Google没有关于Doze / standby会影响哪些功能的适当文档。根据Google的文档,后台任务不会被暂停,只会推迟到下一个维护窗口。如果是这样,应用程序应该能够打印出在Doze期间错过的所有应用程序。但是,观察到应用程序仅在维护窗口期间打印日志。这将破坏预期的行为。
白名单是一个不错的选择,但应用程序仍然会受到Doze模式的影响。即使用户明确选择不这样做,限制应用程序行为的原因是什么?当应用程序在不同的设备操作系统、制造商等方面表现不同时,这非常令人沮丧。
抱歉讲了这么多。我想了解是否有任何方法可以完全禁用Doze和待机模式,而不改变现有的实现方式?我已经阅读了各种文档,但没有100%的方法可以实现这一点。请分享您的想法。
1个回答

4
我有一个需求,需要创建一个应用程序,它应该可以24/7运行。您可以为桌面操作系统编写程序。或者,找到一款运行Linux的移动设备并为其编写程序。或者,创建一个自定义版本的Android,以禁用Doze / app standby。或者,看看是否有符合您要求且不适用Doze / app standby的Android硬件(例如,自然始终插入电源的设备,如Android TV或Chromebox)。

所以,有没有办法在不改变现有实现的情况下完全禁用Doze和待机模式呢?

很抱歉,没有。

1
感谢确认。如果这是一个Android设计决定,我完全同意。 - Jess
但我仍然想知道为什么Google不考虑预Marshmallow实现和从未更新的应用程序。当用户明确同意电池耗尽时,我不认为Google有必要对白名单应用程序施加限制。这太过分了吗?我在这里没有看到任何安全或其他问题。此外,我觉得让我的应用程序每天运行大约15到20个小时并允许耗尽电池并使用剩余时间(4到6个小时)进行充电是一个有效的场景。 - Jess
有没有一种方法来支持GPS跟踪Android服务的“工作”模式?我的意思是,Doze会影响Android服务每10秒获取位置并通过htpp发送坐标数据集吗? - NoWar
1
@开发者:Doze模式和应用待机会影响所有应用程序,包括使用GPS的应用程序。实际上,对于使用GPS的应用程序,甚至有更多的限制(例如,在Android Q中进行的更改)。你能做的最好的事情就是使用前台服务,并要求用户选择退出任何针对你的应用程序的电池优化。 - CommonsWare
我理解应用程序不应该能够禁用Doze,但是手机的所有者(人类)难道不应该能够配置和调整所有节能设置以满足他们的喜好吗? - Michael Altfield
@MichaelAltfield:原则上是的,我的假设是问题在于可用性,不希望为那种调整设置而设计一些复杂的界面。另外要注意的是,制造商已经开始采取积极措施来帮助处理电源管理问题,我猜想 Google 的一个目标是试图在设备之间实现更多的一致性。事实上,我不知道他们是否真正成功了。 - CommonsWare

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