三星“应用程序优化”功能在 3 天后杀死后台应用程序

2024-01-20

我们目前正在开发一款 Android 应用程序,它是一款健身追踪器应用程序。它在后台持续运行,并且在大多数设备上运行良好,但我们一直遇到应用程序在某些三星设备上完全消失的问题。经过一番调查,似乎某些三星设备具有完全自定义的“应用程序优化”功能(http://forums.androidcentral.com/samsung-galaxy-s6/599408-app-optimization-after-updating.html http://forums.androidcentral.com/samsung-galaxy-s6/599408-app-optimisation-after-updating.html),这基本上是 Android 更高版本中存在的 Doze 功能的(非常)原始版本,如果应用程序三天没有使用,它基本上只会杀死应用程序。

由于这个应用程序或多或少只进行日志记录,并且不打开活动,这给我们带来了一个大问题,因为许多三星设备上都预先启用了此功能。这个问题是通过使用前台服务来解决的,但这是一个大锤式的解决方案,需要通过不断的通知来打扰用户,而且我们真的不需要应用程序位于前台 - 我们对正常的电源就可以了安卓的管理。

三星应用程序优化功能明确指出,如果应用程序三天未使用,它将“优化”应用程序。有谁了解三星认为“使用”的内容,我可以以某种方式触发它吗?

旁白:在我看来,这是一个实施得很糟糕的功能,它让 Android 上的开发变得更加敌对。除了我们的用例之外,任何消息应用程序都会崩溃。如果不是 Facebook Messenger 和 Whatsapp 被硬连线地排除在该应用程序之外,用户将会发疯,因为这会破坏他们的体验。


我曾经拥有(并且目前拥有)三星设备,所以我从用户的角度了解它是如何工作的。技术规格及其内部工作原理是一个完全独立的问题,我无法回答。

系统可以检测您是否打开应用程序。三星在应用程序优化中使用了这一点,并将为三天以上未使用的应用程序节省电量。但这是一个可怕的系统。

它忽略了可能对应用程序至关重要的后台进程,即使它是您经常使用的应用程序(例如健身追踪器),它也会出现问题。引用应用程序优化列表中的内容:

“为了节省电池电量,超过 3 天未使用的应用程序将被指定为节省电量。指定为节省电量的应用程序可能不会显示通知”

(粗略翻译自挪威语,最初取自运行 Android 6 的 S6)

因此,手动或自动设置(3 天未使用)的应用程序可能会出现后台进程的各种问题。但请记住,用户可以将任何应用程序设置为从不节省电池,并忽略自动设置。因此,考虑到这一点,让我们考虑可能的解决方案。

在一种情况下,您无需担心应用程序和应用程序优化:完全禁用应用程序优化时。

抛开这一点,你实际上只能做两件事:

  1. 要求三星用户禁用您应用的电池优化以防止出现问题

  2. 正如@MinaSamy 建议的(在他们现在删除的答案中),SyncAdapter 并定期同步。请注意,我还没有测试过这个,所以我不知道它是否有效。

还有第三个选项,这确实不是一个解决方案,但您可以忽略它并赌博禁用应用程序优化,或者根本不关心它。

有谁了解三星认为“使用”的内容,我可以以某种方式触发它吗?

据我所知,除非三星添加了一些防止意外打开的保护措施或添加了某种最低活动要求,否则打开就足够了。这似乎是一个“愚蠢”的功能,它运行在硬编码的规则上,而不是实际检测应用程序使用并设置相对于此的节能的动态系统。它“很容易启用”,但幸运的是也很容易禁用。

这意味着您无法触发使其保持活动状态的事件(除非 SyncAdapter 做到了这一点)

为了澄清事实,从@尼尔的回答 https://stackoverflow.com/a/37182474/6296561:

看起来用户确实可以做到这一点,所以必须有一些数据库或设置来控制它。

有点是有的。总共有四个设置,其中三个是特定于应用程序的,并且存储在数据库(或某种其他形式的数据存储)中。尽管非常浅薄,但这四个设置可用于改变应用程序优化的行为:

  • 始终优化
  • 自动优化
  • 从不优化
  • 禁用应用优化

前三个选项基于每个应用程序,这意味着每个应用程序可以有单独的设置。禁用应用程序优化正是您所期望的:它会禁用所有应用程序的整个功能。如果完全禁用它,则不会优化任何内容。

还有一个网站 https://dontkillmyapp.com/列出每个品牌绕过优化的方法。三星的条目或多或少就是我所说的:告诉用户手动禁用优化。没有开发人员解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三星“应用程序优化”功能在 3 天后杀死后台应用程序 的相关文章

  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕
  • 文本溢出:省略号显示不同的字符

    我这里遇到了一些 CSS 问题 看这张图片 https www flickr com photos 125543025 N07 saved 1 在此图像中 我为文本 INTENSE TRAINING 添加了 CSS 样式 sample st
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Android Espresso 单击按钮时出现错误

    我正在尝试使用 espresso 框架为 Android 应用程序编写一些 UI 测试 现在我只是检查启动屏幕上是否存在所有元素 然后尝试单击登录按钮 单击按钮时 测试由于错误而失败 我似乎无法理解为什么会发生这种情况 我的测试代码是 Ru
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code
  • bash:gitolite:找不到命令

    我正在尝试使用 Gitolite 在 Gitlab 中创建一个新分支 我完成安装步骤 当我遇到 设置 gitolite 部分时 我遇到了麻烦 我跟着这个link http sitaramc github com gitolite setup
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql
  • Azure Functions 计时器触发器线程安全

    我想知道是否有人知道如果您在 Azure 函数上设置了 Cron 设置 如果其任务执行时间超过 5 分钟 则每 5 分钟运行一次 会发生什么情况 它备份吗 或者我应该实现一个锁定功能 以防止某些东西 例如在循环中 处理先前调用已经处理的数据
  • SimpleIoC - 在缓存中找不到类型:Windows.UI.Xaml.Controls.Frame

    第一次由 SimpleIoC 实例化我的 ViewModel 时 我遇到了以下错误 我相信我已经按应有的方式设置了容器 但由于某种原因 我仍然收到以下错误 任何想法或帮助将非常感激 Microsoft Practices ServiceLo
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将
  • svn 强制迁移

    我正在考虑将我们的 svn 代码库迁移到 perforce 看看谷歌搜索结果 我确实找到了两个具有相同功能的工具 P4转换ftp ftp perforce com pub perforce tools p4convert docs inde
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于
  • PLS-00103:遇到符号“;”当预期出现以下情况之一时:

    我正在尝试插入用户安全问题的答案 以用于密码重置功能 Ellucian 横幅 v8 提供了一个用于运行此 API 的 API 我对他们的 API 非常陌生 从下面的错误消息来看 我还远远没有正确运行它 任何帮助表示赞赏 我尝试在 Oracl
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐

  • 异步加载脚本

    我正在使用 JQuery 中的几个插件 自定义小部件和其他一些库 结果我有几个 js 和 css 文件 我需要为我的网站创建一个加载程序 因为加载需要一些时间 如果我可以在导入所有内容之前显示加载程序 那就太好了 etc 我找到了几个教程
  • 失败时漂亮打印数组

    describe Rspec do it should print arrays in a readable manner do arr 0 a 1 1 b 2 2 c 3 3 d 4 4 e 5 6 g 7 7 h 8 8 i 9 arr
  • 为什么Java编译器11使用invokevirtual来调用私有方法?

    当使用 OpenJDK 8 中的 Java 编译器编译以下代码时 调用foo 是通过一个完成的invokespecial 但是当使用 OpenJDK 11 时 invokevirtual被发射 public class Invoke pub
  • 两个java源文件的结构差异

    有没有办法找到两个java源文件的结构差异 我想找到两个java文件的结构差异 但我不知道如何开始 java中有没有用于此目的的库 更新 结构差异意味着像 它不关心空白或位置 它应该在语法上比较源 这有助于我们跟踪实际的更改 即使方法被移动
  • 安卓|使用 Retrofit2 和本地 API 进行基本身份验证

    我开始制作一个应用程序 并首先将其连接到模拟 API 现在我想将其连接到在我的 PC 上运行的 API For starters I m trying to implement the login access Since my API s
  • 在 JavaScript 中将 png/jpg 转换为 .ico

    所以我想要一个工具来生成 ico来自 jpg png 的文件 我使用以下代码从画布生成了 jpg var img c toDataURL image png document write img src 取自此画布
  • 如何更改 flutter showAboutDialog 中的文本按钮颜色?

    我正在使用showAboutDialogflutter 中的函数显示我的项目中使用的许可证 我如何坚持改变文本颜色VIEW LICENSES and CLOSE文本按钮 请参阅此图片以进行说明 这是我的代码 onTap showAboutD
  • 如何在离开和返回 HTTPS 页面时保留更改的表单内容? (适用于 HTTP)

    在文本区域中输入 更改某些内容 在提交表单之前 请离开页面 例如通过单击浏览器的后退按钮 返回编辑页面 例如 单击前进按钮 预期结果 在textarea中输入的内容应该仍然存在 实际结果 with HTTPS 所有的改变都消失了 bad w
  • MongoDB无尽查找ToListAsync

    我正在尝试从 MongoDB 集合中检索数据 但是发生了一些奇怪的事情 如果我显示 MessageBox 则数据获取有效 如果不显示 则数据获取无效 static class MongoDBController static MongoCl
  • Obj-C Cocoa 通知 NSApplicationDidResignActiveNotification

    我有一个名为 AppController h m 的类 我想在发送 NSNotificationDidResignActiveNotification 时做一些事情 所以我在AppController m中编写了这段代码 void init
  • CNN - 图像调整大小 VS 填充(是否保持纵横比?)

    虽然人们在训练 CNN 时通常倾向于简单地将任何图像调整为正方形 例如 resnet 采用 224x224 正方形图像 但这对我来说看起来很难看 尤其是当长宽比不在 1 左右时 事实上 这可能会改变基本事实 例如 专家可能给扭曲图像的标签可
  • 如何获得适用于 Android 的简单相机程序?

    我刚刚开始用 Java 编程 我需要一个简单的应用程序来显示相机 拍照并将图片数据发送到某个地方 我一直在网上搜索 试图找到一个按预期工作的好相机教程 但显然它们都需要一些我还没有的内在知识 On this https stackoverf
  • 如何对齐输入内部的文本?

    对于所有默认输入 您填写的文本从左侧开始 怎么让它从右边开始呢 Use the 文本对齐 http www w3schools com cssref pr text text align aspCSS 中的属性 input text ali
  • C++ 中的继承和模板 - 为什么继承的成员不可见?

    当一个模板公开继承另一个模板时 基公共方法不应该是可访问的吗 template
  • 如何在 php 中添加 txt 文件并创建 ZIP [重复]

    这个问题在这里已经有答案了 可能的重复 打开文件 写入文件 将文件另存为 zip 并流式传输给用户下载 https stackoverflow com questions 2286639 open file write to file sa
  • Xcode 7 GM 无法验证 git 存储库

    我可以使用 Xcode 6 毫无问题地提交到这个存储库 git 在终端中仍然可以正常工作 我可以在本地和远程提交 在 Xcode 7 中 我可以本地提交 但不能远程提交 它说身份验证失败并且无法重置用户名 它呈灰色 我的本地 git 配置文
  • Vue router - 如何根据用户角色在同一路由路径上加载多个组件?

    我有一个应用程序 用户可以以不同的角色登录 例如 seller buyer and admin 对于每个用户 我想在同一路径上显示仪表板页面 例如 http localhost 8080 dashboard然而 每个用户将在不同的 vue
  • 如何向画布元素添加简单的 onClick 事件处理程序?

    我是一名经验丰富的 Java 程序员 但大约十年来我第一次看到一些 JavaScript HTML5 的东西 我完全被什么应该是最简单的事情难住了 作为一个例子 我只想画一些东西并为其添加一个事件处理程序 我确信我在做一些愚蠢的事情 但我已
  • iPhone模拟器和Android模拟器的区别

    iPhone模拟器和Android模拟器有什么区别 我听人们说模拟器确实模拟了目标设备 但在模拟器的情况下则不然 我认为Android模拟器模仿目标设备的处理速度 内存使用情况 但模拟器不模拟设备 免责声明 我只是一名 iPhone 开发者
  • 三星“应用程序优化”功能在 3 天后杀死后台应用程序

    我们目前正在开发一款 Android 应用程序 它是一款健身追踪器应用程序 它在后台持续运行 并且在大多数设备上运行良好 但我们一直遇到应用程序在某些三星设备上完全消失的问题 经过一番调查 似乎某些三星设备具有完全自定义的 应用程序优化 功