问题标签 [android-doze]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在打盹模式下移动设备(Android Preview M / Marshmallow)?
我按照此处描述的步骤操作:
https://developer.android.com/preview/testing/guide.html#doze-standby
情况:
Android 调试桥版本 1.0.32
Nexus 9 预览版 M
贝壳:
=> 工作,设备已拔下
=> 输出:步进到:ACTIVE
=> 不起作用 => 输出:
我试过了:
但它没有用。
所以我的问题,如上所述,如何在打盹模式下移动设备?我做错了什么?
编辑 - 2016 年 6 月:
新链接: https ://developer.android.com/training/monitoring-device-state/doze-standby.html
android - “打瞌睡”的真正作用是什么?应用程序是否应该因此而更改其代码?
背景
Android 6 引入了一种称为“Doze”的内置机制,以便在设备休眠时更好地处理电池。
问题
问题是,我看不出它是如何工作的,以及应用程序应该如何改变以处理这种新机制,如果有的话。
显然,这取决于您在代码中的内容,但我应该寻找什么?
我发现了什么
我发现 2 个网页谈论这个:
- https://plus.google.com/+AndroidDevelopers/posts/94jCkmG4jff
- http://developer.android.com/training/monitoring-device-state/doze-standby.html
但他们大多谈论警报:
为了帮助安排闹钟,Android 6.0(API 级别 23)引入了两个新的 AlarmManager 方法:setAndAllowWhileIdle() 和 setExactAndAllowWhileIdle()。使用这些方法,您可以设置即使设备处于打瞌睡状态也会触发的警报。
问题
应用程序开发人员应该如何处理这种新机制?调度 API 会因此而有所不同吗?需要的更改如何:
警报
后台/前台服务
唤醒锁
JobScheduler 和 GcmTaskService
在这个问题上是否需要进行任何调整来处理 Android 6 及更高版本?
android - 如何正确触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图?
如文档中所述:
“拥有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限的应用程序可以触发系统对话框,让用户直接将应用程序添加到白名单,而无需进行设置。应用程序触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图来触发对话框。”
有人能告诉我激发这种意图的正确方法吗?
android - 如何在棉花糖上强制打瞌睡?
一切似乎都指向这两个命令:
我按照运行 Marshmallow 官方版本的 Nexus 6 上的说明进行操作。我将手机插入我的测试机。我设置了我的应用程序来测试我想用打瞌睡测试的部分。我关掉屏幕。在上面运行之后battery unplug
,我没有得到任何输出,所以我认为它可以工作,但每次我运行deviceidle step
输出总是Stepped to: ACTIVE
.
我不确定这是否重要,但我正在尝试测试的应用程序的特定功能是我正在设置的警报,它应该将手机从打盹中唤醒。PendingIntent
我希望我的设备在我的计划起飞时处于打瞌睡AlarmManager.setAlarmClock
状态。这会阻止我的设备进入打盹吗?
android - Android DOZE 模式 GCM 优先级
对于 DOZE 模式测试,我正在 Android 6.0 上开发示例 GCM 应用程序。
如前所述,在打盹模式下,设备不会为正常优先级 GCM 唤醒。我想检查一下。
根据文档(https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message)
正常优先。这是消息传递的默认优先级。正常优先级消息不会在睡眠设备上打开网络连接,并且它们的传递可能会延迟以节省电池。对于时间敏感度较低的消息,例如新电子邮件通知或要同步的其他数据,请选择正常传递优先级。
我使用此链接中的一些服务器代码测试了我的应用程序。 https://stackoverflow.com/a/22169411/4242382
我从服务器发送的消息是这样的:
如您所见,没有设置优先级,因此在打盹模式下我不应该立即得到它。但设备仍会立即收到 GCM 消息。
测试方法
- 运行基于 GCM 的应用程序
- 通过从 adb shell (链接)
发出命令来诱导打盹模式
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step
- 从服务器发送消息(phpfiddle)
预期行为:正常优先级 GCM 没有立即传递 观察到的行为:消息立即传递
DOZE 模式是否按照文档工作?我没有看到它发生,有人面临同样的情况吗?
android - Wifi Casting 打瞌睡模式
通过 Wifi 投射到 Chromecast 时,我有用户抱怨在 Android 6 设备上失去连接。在查看日志时,我看到了这一点:
正如您可能猜到的那样,在投射过程中打开 Wifi 会导致问题。这似乎只是运行 Android 6 的设备的问题,所以我认为它与新的打盹模式有关。我看到打盹模式和前台服务已经确定前台服务不会打瞌睡(我可以确认这一点),但它似乎并没有阻止打盹删除必要的网络访问。虽然我还没有收到任何关于 DLNA 选角的投诉,但我想它也会有同样的问题。如果应用程序正在积极流式传输音乐并且无缘无故地被迫使用移动网络,这也会导致问题。有没有办法防止 Doze 在前台应用程序使用 Wifi 访问时关闭它?
android - 在 Genymotion 中测试打盹功能(Android 6.0 Marshmallow)
我试过谷歌的命令
在 Genymotion 的“PREVIEW - Google Nexus 6P - 6.0.0 - API 23 - 1440x2560”和“PREVIEW - Google Nexus 5X - 6.0.0 - API 23 - 1080x1920”虚拟设备上,但遗憾的是不能让任何人进入空闲模式。总是在我看到第二个命令之后Stepped to: ACTIVE
。
然后尝试
我明白了Unable to go idle; not enabled
。这很奇怪,因为 Genymotion 在我使用的 2.6.0 版本的发行说明 ( https://www.genymotion.com/#!/release-notes ) 中声明“Doze 现在可以正常工作”。
有没有人设法在 Genymotion 中使用和测试 Doze?我应该使用其他一些命令吗?
android - 没有 GCM 的 Doze 和 Androids(尤其是在中国)
使用新的 Android M Doze,唤醒应用程序的唯一(用户友好)方法是通过来自 GCM 的高优先级消息。但是如果 GCM 不是一个选项呢?中国的很多安卓设备都没有GCM。即使他们有,防火墙也会阻止任何与谷歌的连接。
目前,中国的应用程序使用自己的推送服务,如百度推送,但随着 Doze 的出现,它们似乎注定要失败。据我了解,第三方推送会有问题。
有人对它在中国的发展有什么想法吗?或者任何没有 GCM 的 Android 设备?中国制造商会忽略 Doze 吗?
android - 什么是打盹模式计时?
如果用户在屏幕关闭的情况下将设备不插电并静止一段时间,则设备会进入打盹模式。
在打盹模式开始之前,设备需要保持空闲和静止多长时间?
等等:
系统会定期退出 Doze 短暂的时间,以让应用程序完成其延迟活动。在此维护窗口期间 [...] 随着时间的推移,系统安排维护窗口的频率越来越低...
那么,什么是维护窗口间隔及其增长率?
android - Android 打盹模式 - 蓝牙
我的问题很简单。我想知道我的应用程序的最佳做法是什么,以便它可以“防打瞌睡”。这变得更加相关,因为 Android N 将在更多情况下应用 Doze。
在阅读Doze 文档时,有一部分提到了网络访问:
在打盹模式下,系统会尝试通过限制应用程序访问网络和 CPU 密集型服务来节省电池电量。它还可以阻止应用程序访问网络并推迟它们的工作、同步和标准警报。
我相信Buetooth属于Network Access,对吗?
由于我没有启用 Marshmallow(或 Android N)的设备,并且由于 Emulator 不允许蓝牙交互,因此我无法在打盹模式下真正测试我的应用程序行为。
打盹模式会杀死任何正在进行的蓝牙连接吗?同样适用于蓝牙经典和 LE 吗?带蓝牙 A2DP 的耳机怎么样?
我的应用程序必须保持此连接,否则核心功能将被破坏。
当然,在这种情况下,只要用户愿意,您的设备就需要连接到蓝牙远程设备。
我知道存在打瞌睡白名单,但在某些情况下,它似乎不会让应用程序像在低于 API 23 的设备上那样运行。
谢谢您的帮助!