我在这里阅读了许多关于打盹模式的问题,例如Android 打盹模式、Android N 打盹模式 - 如何保持后台下载和处理?,唤醒锁和打盹模式和许多其他人。但在许多回复中,意见不同。我自己无法测试(模拟器不支持我的处理器,我唯一的测试设备是android 5.1)。我想知道接下来的情况。我有一个活动,它控制媒体播放器。在具有 android 6.0 及更高版本的设备上,由于打盹模式,它无法按预期工作。正如许多解决方案所说,为了防止打盹模式,它应该在前台的单独进程中启动服务并从那里控制媒体播放器。问题是:如果我在单独的进程中使用部分唤醒锁定启动前台服务,除了显示通知之外什么都不做,并且在我的活动中将控件留给媒体播放器,它是否应该防止打盹模式?或者除了从窗口管理器保持屏幕打开之外,还有其他方法吗?
1 回答
根据this SO question and answer:
在这篇文章9 月 17 日的评论中,黛安·哈克伯恩写道:
一直在运行前台服务(带有相关通知)的应用程序不受打盹限制。
看起来使用前台服务可以防止应用程序被 Doze 杀死。
但请注意,一些供应商(我知道三星,但可能还有其他供应商)创建了自己的 RAM 节约/电池节约工具。这些可能表现出与打瞌睡完全不同的模式,并且通常还有一堆其他的箍要跳过。您也不能保证在这些设备上获得相同的行为 - 它们可能或多或少具有攻击性,而更具攻击性的设备往往更不利于保持服务或其他任何活动。
也没有通用的方法来处理这些问题,但有人制作了一个完整的网站,专门展示哪些供应商存在问题,以及潜在的解决方法。请注意,大多数有问题的供应商只提供最终用户解决方案,这意味着您(开发人员)在没有用户做某事的情况下无法修复它。
虽然这很不幸,但当公司实施自己的 Android 版本时,就会发生这种情况。此外,根据我自己在三星手机上的经验(主要是作为用户而不是开发人员),这些设置并不总是得到尊重,并且仍然会导致令人讨厌的行为。
无论如何,只要 Doze 存在,前台服务应该没问题。然而,在其他供应商上,所有的赌注都落空了,您将受到供应商实施某种优化系统的摆布。在某些暴露的操作系统上(再次,请参见前面链接的网站),您也别无选择,只能要求用户修复某些设置以使内容保持活力。