【问题标题】:Android - Disable Forced DozeMode or AppStandByModeAndroid - 禁用强制打盹模式和应用待机模式
【发布时间】:2021-03-12 02:48:47
【问题描述】:

我有一个应用程序使用ForegroundService 将位置更新发送到服务器。基本上是一个跟踪器。

这个ForegroundService 有一个Handler,它会定期(使用postDelayed)执行一段代码来发送位置。

当应用程序处于前台甚至后台时,这工作得非常好,但我开始注意到手机被锁定时的延迟,屏幕关闭大约 15 分钟。我的意思是,15 分钟没有用户活动,也没有插入充电器。

这发生在 Android Q (v10) 设备上。我假设这也会发生在运行 Oreo 的任何设备上。

让我们说清楚...我的应用每 30 秒发送一次位置,但是当输入我认为是 DozeModeAppStandByMode 时,它会继续发送位置,但每 2 分钟(或多或少)。如果我打开屏幕或插入充电器,它会立即恢复到 30 秒的速度。这就是让我对 DozeModeAppStandByMode 感兴趣的原因。此外,如果我不碰手机,但插上充电器,就不会发生这种情况。

如上所述,我很确定 DozeModeAppStandByMode 正在启动,我知道我可以将我的应用列入白名单以防止这种情况发生。但在更进一步之前,我想重现这一点,而无需在每次我想测试我的应用程序的行为时等待这 15 分钟。

所以我“用谷歌搜索”了如何强制执行此操作,这就是我发现的:

对于DozeMode(见source

adb shell dumpsys 电池拔掉

adb shell dumpsys deviceidle step deep

并继续执行最后一条命令,直到达到IDLE状态。

对于AppStandByeMode(见source

adb shell dumpsys 电池拔掉

adb shell am set-inactive packageName true

并使用其他命令查询状态:

adb shell am get-inactive packageName

我确认它返回 Idle=true

我什至也照this other blog的建议,发出:

adb shell dumpsys deviceidle force-idle

虽然我没有进入这种模式,但现在看来我是而且我无法摆脱它......查看更新

更新

起初我以为我没有进入打盹模式...现在我可以确认我进入了,但它总是立即触发。 (不再等待那 15 分钟)

每当我锁定手机并且屏幕熄灭时,它都会自动进入打盹模式并开始间隔位置更新。我插上充电器,然后在 30 秒后再次发送。

我试过了:

adb shell dumpsys deviceidle unforce

adb shell dumpsys deviceidle 禁用

adb shell dumpsys 电池重置

还是一样。

还有:

  • 手机关机并重新开机
  • 卸载应用程序
  • 在应用设置中将电池优化更改为 NOT OPTIMZE

我错过了一步吗?

【问题讨论】:

  • @KuLdipPaTel,我不明白这怎么可能是解决方案

标签: android android-doze battery-saver android-doze-and-standby android-appstandby


【解决方案1】:

除了打盹模式,Android 9 扩展了 AppStandby 的概念,使用了App Standby Buckets

除了网络限制之外,低优先级存储桶中的应用在运行作业、触发警报和接收 FCM 消息的频率上都会受到影响。

您可以使用以下命令获取应用的当前存储桶: adb shell am get-standby-bucket your.package.name

您可以使用以下命令设置存储桶并查看应用的行为方式: adb shell am set-standby-bucket your.package.name

我写了一篇文章,总结了多年来关于后台进程限制的所有变化:https://rotemmatityahu.medium.com/workmanager-does-it-always-manage-to-work-fd8518655052

【讨论】:

  • 感谢您的回答!我会试试的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
相关资源
最近更新 更多