首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android M Doze状态本身有多个状态吗?

Android M Doze状态本身有多个状态吗?
EN

Stack Overflow用户
提问于 2015-08-13 22:44:28
回答 2查看 1.6K关注 0票数 4

我稍微修改了这个应用程序:https://github.com/commonsguy/cw-omnibus/tree/master/JobScheduler

它使用setExactAndAllowWhileIdle设置警报,并安排每1分钟发出一次警报并记录。

根据Doze文档,如果这个应用程序在手机处于Doze模式时正在运行,那么每15分钟就应该有一个报警。我没看到那种行为。

在一个运行Android M的nexus 5上,在启动应用程序和整个警报调度过程之后,我使用提供的abd命令将手机放入Doze .

亚行空壳虚拟电池拔出亚行空壳虚拟设备步骤亚行虚拟设备空闲-h

...From日志,我看到大约30分钟的警报器每分钟响一次,最后,它们相隔15分钟大约一个小时。然后回到每分钟一次,然后回到每分钟15分钟。在测试期间,电话完全没有受到干扰。

有人知道这是为什么吗?我当时的印象是,在亚行发出指令后,手机将立即处于Doze模式,警报将在15分钟后启动。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-05 05:43:49

首先,相关的adb命令文档是不完整的,正如您在指向第2930期的链接中指出的那样。

以下命令仅打印使用信息:

代码语言:javascript
复制
adb shell dumpsys deviceidle -h

下面的命令将显示当前状态,包括进入空闲状态的先决条件(启用、不移动、不充电、屏幕关闭):

代码语言:javascript
复制
adb shell dumpsys deviceidle

  Settings:
    ...
  Whitelist (except idle) system apps:
    ...
  Whitelist (except idle) all app ids:
    ...
  mEnabled=true
  mForceIdle=false
  mSigMotionSensor=null
  mCurDisplay=...
  mScreenOn=false
  mCharging=false
  mSigMotionActive=false
  mState=INACTIVE

这表明你是否需要做更多的设置。例如,它似乎需要2或3个点击模拟器的电源按钮,以获得mScreenOn=false

以下命令向空闲模式迈出了一步,但第2930期解释说,要进入非活动状态,IDLE_PENDING,感测,然后是空闲,您需要多次执行步骤:

代码语言:javascript
复制
adb shell dumpsys deviceidle step

下面的命令将强制它进入空闲状态:

代码语言:javascript
复制
adb shell dumpsys deviceidle force-idle

顺便说一下,打瞌睡和应用程序待命上的开发人员文档最近得到了改进。

票数 1
EN

Stack Overflow用户

发布于 2015-10-13 19:32:16

当设备处于空闲模式时,setExactAndAllowWhileIdle的速率限制是不同的。我猜你的手机需要30分钟才能通过Doze进入空闲模式,这时你只能每15分钟打一次电话给setExactAndAllowWhileIdle

在Doze模式下,你的手机会周期性地唤醒一个长达10分钟的空闲维护期。在这10分钟内,它将从空闲模式醒来,您的速率限制将调整为每分钟一次。在维护窗口结束后,您将看到它每15分钟恢复一次。

在docs:打瞌睡中描述了空闲维护窗口

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31999618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档