Android 三星";“应用程序优化”;此功能在3天后杀死后台应用程序
我们目前正在开发一款Android应用程序,它是一款健身跟踪器应用程序。它经常在后台运行,在大多数设备上都能正常工作,但在一些三星设备上,应用程序完全消亡的问题一直存在。经过调查,三星的一些设备似乎有一个完全定制的“应用程序优化”功能(),这基本上是一个(非常)原始版本的打盹功能,存在于Android的更高版本中,如果应用程序已经三天没有使用,它基本上只是谋杀应用程序 由于该应用程序或多或少只是做日志记录,并且没有打开活动,这给我们带来了一个大问题,因为许多三星设备都预先启用了该功能。这个问题可以通过使用前台服务来解决,但这是一个需要不断通知来干扰用户的解决方案的重锤,我们真的不需要应用程序位于前台——我们对Android的正常电源管理很满意 三星应用程序优化功能明确表示,如果应用程序已经三天没有使用,它将“优化”应用程序有人知道三星认为“使用”了什么吗?我能以某种方式触发它吗? 旁白:在我看来,这是一个执行不力的特性,使得Android上的开发更具敌意。除了我们的用例之外,任何messenger应用程序都会崩溃。如果不是因为Facebook Messenger和Whatsapp被硬连线豁免,用户会发疯,因为这会破坏他们的体验 我们对Android的正常电源管理很满意 是吗?来自Android文档 但是,由于用户没有直接意识到后台服务,因此在这种状态下,它被认为是一个可以杀死的有效候选服务,您应该对此做好准备。特别是,长时间运行的服务将越来越可能被终止,并且如果它们保持足够长的启动时间,将保证被终止(并在适当的情况下重新启动) 三天的时间似乎属于“长期运行……保证会被杀死”Android 三星";“应用程序优化”;此功能在3天后杀死后台应用程序,android,android-service,android-alarms,android-wake-lock,samsung-touchwiz,Android,Android Service,Android Alarms,Android Wake Lock,Samsung Touchwiz,我们目前正在开发一款Android应用程序,它是一款健身跟踪器应用程序。它经常在后台运行,在大多数设备上都能正常工作,但在一些三星设备上,应用程序完全消亡的问题一直存在。经过调查,三星的一些设备似乎有一个完全定制的“应用程序优化”功能(),这基本上是一个(非常)原始版本的打盹功能,存在于Android的更高版本中,如果应用程序已经三天没有使用,它基本上只是谋杀应用程序 由于该应用程序或多或少只是做日志记录,并且没有打开活动,这给我们带来了一个大问题,因为许多三星设备都预先启用了该功能。这个问题可
如果问题不是您的服务被终止,而是没有重新启动,您可以使用AlarmManager定期检查服务的状态并重新启动,如有必要。我认为您应该实现一个“广播接收器”,该接收器侦听自定义“意图”,并且该“意图”将由“服务”的“onDestroy()”方法的“服务”广播,因为当“系统”终止“服务”时,该方法将被明确调用。 当“广播接收器”接收到“意图”时,您应该再次启动“服务”。
要区分您停止“服务”还是“系统”停止“服务”,只需使用“共享参考”中存储的一些“布尔值”,然后在“广播接收器”中,您决定是否激活“服务”是否有原因无法将您的服务添加到“不优化”列表中
看起来用户确实可以做到这一点,所以一定有一些数据库或设置可以控制它 或者,如果您检测到正在其中一台设备上安装,请打开Optimize activity(优化活动)页面,并显示一条消息,说“不要优化我们!”。我拥有(目前拥有)三星设备,因此我从用户的角度对其工作原理略知一二。技术规格和它在内部的工作方式是一个完全独立的问题,我无法回答 系统可以检测您是否打开应用程序。三星在其应用程序优化中使用了这一点,并将为超过三天未使用的应用程序节省电量。但这是一个糟糕的系统 它忽略了可能对应用程序至关重要的后台流程,即使它是您积极使用的应用程序,如健身跟踪器,也会出现问题。引用应用程序优化列表中的内容: 为节省电池电量,已使用超过3天的应用程序将被指定为省电。指定为省电的应用程序可能不会显示通知 (挪威语的粗略翻译,最初取自运行Android 6的S6) 因此,手动或自动设置(3天不使用)的应用程序可能会在后台进程中出现各种问题。但请记住,用户可以将任何应用程序设置为从不节省电池,并忽略自动设置。因此,考虑到这一点,让我们考虑可能的解决方案。 有一种情况下,你不需要担心应用程序和应用程序优化:当应用程序优化被完全禁用时 撇开这一点不谈,实际上你只能做两件事:
看起来用户确实可以做到这一点,因此