【发布时间】:2017-08-20 06:07:39
【问题描述】:
有一个旧的 Android 应用可以在后台运行 2 服务(Service)。
通过在工作时发送数据和记录的可能性来更新应用程序并不是新的 DozeMode。在你修改当前代码之前,我决定检查一下现在一切如何工作。要运行应用程序,在日志中我看到两个服务都在运行(服务的基本含义是读取设备的位置,第二个服务将数据发送到服务器)。使用命令关闭屏幕
adb shell dumpsys deviceidle step
将系统转换为 DozeMode:
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: ACTIVE
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: IDLE_PENDING
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: SENSING
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: LOCATING
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: IDLE
如果我理解正确 - IDLE 与文档中所有服务、jobsheduler、警报管理器和其他后台组件应关闭的模式相同。但这并没有发生。从日志来看,应用程序按预期工作,而 DozeMode 要么我做错了。
告诉我,如果在后台(即关闭应用程序时)有任何操作方式,也许有任何最佳实践来测试 DozeMode 和(后期)用服务重写到更现代的方式。
Android 6,BlackView BV6000S,允许非最佳电池寿命(白名单)的列表中缺少应用程序
更新:Nikita:app NG$ adb shell dumpsys deviceidle force-idle
现在强制进入空闲模式
应用目前工作
【问题讨论】:
-
你在哪里看到过那个shell命令?在 API "Optimizing for Doze Mode" 中有命令
$ adb shell dumpsys deviceidle force-idle来激活空闲状态...
标签: android android-service adb android-doze