我曾经拥有(并且目前拥有)三星设备,所以我从用户的角度了解它是如何工作的。技术规格及其内部工作原理是一个完全独立的问题,我无法回答。
系统可以检测您是否打开应用程序。三星在应用程序优化中使用了这一点,并将为三天以上未使用的应用程序节省电量。但这是一个可怕的系统。
它忽略了可能对应用程序至关重要的后台进程,即使它是您经常使用的应用程序(例如健身追踪器),它也会出现问题。引用应用程序优化列表中的内容:
“为了节省电池电量,超过 3 天未使用的应用程序将被指定为节省电量。指定为节省电量的应用程序可能不会显示通知”
(粗略翻译自挪威语,最初取自运行 Android 6 的 S6)
因此,手动或自动设置(3 天未使用)的应用程序可能会出现后台进程的各种问题。但请记住,用户可以将任何应用程序设置为从不节省电池,并忽略自动设置。因此,考虑到这一点,让我们考虑可能的解决方案。
在一种情况下,您无需担心应用程序和应用程序优化:完全禁用应用程序优化时。
抛开这一点,你实际上只能做两件事:
-
要求三星用户禁用您应用的电池优化以防止出现问题
-
正如@MinaSamy 建议的(在他们现在删除的答案中),SyncAdapter 并定期同步。请注意,我还没有测试过这个,所以我不知道它是否有效。
还有第三个选项,这确实不是一个解决方案,但您可以忽略它并赌博禁用应用程序优化,或者根本不关心它。
有谁了解三星认为“使用”的内容,我可以以某种方式触发它吗?
据我所知,除非三星添加了一些防止意外打开的保护措施或添加了某种最低活动要求,否则打开就足够了。这似乎是一个“愚蠢”的功能,它运行在硬编码的规则上,而不是实际检测应用程序使用并设置相对于此的节能的动态系统。它“很容易启用”,但幸运的是也很容易禁用。
这意味着您无法触发使其保持活动状态的事件(除非 SyncAdapter 做到了这一点)
为了澄清事实,从@尼尔的回答 https://stackoverflow.com/a/37182474/6296561:
看起来用户确实可以做到这一点,所以必须有一些数据库或设置来控制它。
有点是有的。总共有四个设置,其中三个是特定于应用程序的,并且存储在数据库(或某种其他形式的数据存储)中。尽管非常浅薄,但这四个设置可用于改变应用程序优化的行为:
前三个选项基于每个应用程序,这意味着每个应用程序可以有单独的设置。禁用应用程序优化正是您所期望的:它会禁用所有应用程序的整个功能。如果完全禁用它,则不会优化任何内容。
还有一个网站 https://dontkillmyapp.com/列出每个品牌绕过优化的方法。三星的条目或多或少就是我所说的:告诉用户手动禁用优化。没有开发人员解决方案。