问题标签 [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.

0 投票
2 回答
1719 浏览

android - 以打盹模式启动前台服务

我正在开发一个通过 wifi 连接到特殊设备的应用程序。我需要在短时间内进行状态更新,分别。使我的特殊设备在应用程序中的状态保持最新。FCM 不是一种选择。我的想法是给用户两个选择:使用前台服务的快速更新或使用定期更新机制的“慢”更新以节省电池。

我的问题是关于第二种选择。间隔应该在五分钟左右。JobScheduler因此无法使用。但即使使用AlarmManager似乎也不是一个选项,因为我无法在打瞌睡维护窗口期间获得网络访问权限。

我考虑过使用 aWakefulBroadcastReceiver来接收IntentAlarmManager要求 aWakeLock并通过调用将我的长期运行Service变成前台startForeground()。但似乎只要设备处于打盹模式,该startForeground()方法就没有效果。Service

我阅读了很多关于打瞌睡和服务的页面,但不知道如何解决我的问题......有人知道吗?

0 投票
0 回答
873 浏览

android - setAlarmClock 不准确

这是我关于stackoverflow的第一个问题。我已经阅读了许多类似的主题,但一直无法找到问题所在,我有点绝望。

我开发了一个带闹钟的应用程序。此闹钟仅在某些情况下响起。如果他们不适用,我会向用户发送通知,并在 10 分钟后使用setAlarmClock(). 如果在用户指定的时间之前条件不适用,则警报永远不会响起。

现在,当我暂时不注意手机并检查通知时,我发现它们不是每 10 分钟出现一次,而是非常不规则。有时它在 10 分钟后出现,有时是 11、15、30 或其他时间。

该问题仅在手机未插入时才会出现,因此我认为这与 Android 的打盹模式有关。setAlarmClock()应该有助于解决这个问题,但它没有。我也试过setExactAndAllowWhileIdle()了,但也没有用。因此,如果有人知道问题可能是什么,我会非常高兴听到它。

这是我的代码:首先,我的 AlarmController 中的两个方法

清单中的接收者:

这是我的警报接收器:

提前非常感谢!

0 投票
1 回答
10251 浏览

android - 如何在 Android 上测试打盹模式?

有一个旧的 Android 应用程序可以在后台运行 2 服务(服务)。

使用在工作时发送数据和记录的可能性来更新应用程序并不是新的 DozeMode。在你修改当前代码之前,我决定检查一下现在一切如何工作。要运行应用程序,在日志中我看到两个服务都在运行(服务的基本含义是读取设备的位置,第二个服务将数据发送到服务器)。使用命令关闭屏幕

将系统转换为 DozeMode:

如果我理解正确 - IDLE 与文档中所有服务、jobsheduler、警报管理器和其他后台组件的模式相同。但这并没有发生。从日志来看,该应用程序按预期工作,而 DozeMode 要么我做错了什么。

告诉我,如果在后台有任何操作(即当你关闭应用程序时),也许有任何最佳实践来测试 DozeMode 和(后期)用服务重写到更现代的方式。

Android 6,BlackView BV6000S,允许非最佳电池寿命的列表中缺少应用程序(白名单)

UPD:Nikita:app NG$ adb shell dumpsys deviceidle force-idle 现在强制进入空闲模式应用程序当前工作

0 投票
0 回答
182 浏览

android - 重复警报以处理打盹模式

我有一个基于用户位置自动执行的应用程序。我现在正在处理打瞌睡模式,因为打瞌睡会影响我根据位置变化在后台发送请求的能力。我想每 9 分钟或在维护窗口期间让我的服务访问互联网。我正在使用 AlarmManager 和 SetExactAndAllowWhileIdle,但由于某种原因,尽管我给了它们一个将来会出现的 AlarmType.RtcWakeup,但我的警报却一遍又一遍地发送垃圾邮件。我的位置服务在应用程序启动时启动,我的服务也在应用程序终止和设备重新启动时启动/重新启动。

我对何时何地设置闹钟感到困惑。现在我在定位服务启动时设置闹钟。警报不断设置,甚至立即触发,而不是我设置它们触发的时间。我正在使用 AlarmType.RtcWakeup 设置 SetExactAndAllowWhileIdle,我的时间看起来是正确的。我正在用敬酒将它打印出来,它清楚地表明它在未来约 9 分钟。

我应该什么时候设置闹钟?我不应该对从警报中收到的每个 OnHandleIntent 采取行动吗?我是否错误地设置了闹钟?

现在,当我的位置服务启动时,我正在调用它:

StartAlarm_Now();

我应该在应用程序终止或暂停时设置它吗?

0 投票
1 回答
481 浏览

android - 如何处理用户对 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 的回答?

目前,我向用户询问应用程序功能以节省电池电量:

如何跟踪同意或拒绝对话?

在协议的那一刻,我只是打开下一个活动(在此之前检查库存设置),如果用户拒绝,则再次显示此对话框。

我需要的跟踪是在无法显示带有解释的对话框的情况下。

0 投票
0 回答
1020 浏览

android - 打盹模式电池优化,设备特定问题

我以编程方式实现了忽略电池优化功能。我发现了很多问题和答案,但我想知道IGNORE_BATTERY_OPTIMIZATIONS仅适用于纯 android 还是有其他情况?

我有几个设备如下所列:

  • 摩托 g4 (7.0)
  • 摩托游戏 (6.0)
  • 三星 Galaxy Note 4(6.0)
  • 小米笔记 4 (6.0)
  • 联想 Tab(6.0)
  • 荣誉 (6.0)

它在 Moto 设备中正常工作。

在 Moto 中,我们可以弹出窗口,如果我们接受许可,那么它运行良好。

它在联想标签和荣耀设备中的正确率是 50%。

  • 在联想选项卡中,当权限弹出出现时,如果我们接受权限,则添加应用程序,但是当我们手动更改设置时,它不起作用。
  • 好吧,在荣耀设备中,当我们获得权限弹出窗口并接受权限后,我们打开设置并检查其在不允许电池优化应用程序中列出的应用程序状态,但应用程序的状态是“允许电池优化”。之后,当我们手动允许它时,它将起作用。

在 MI 和三星设备中,它不再工作了。

好吧,小米设备是例外情况,因为它们有自己的定制架构,所以我们不关心小米设备。

对于三星 note 4,有一个特殊情况如下:

安装应用程序后,我们会弹出权限并接受权限。之后我们在设置中检查它,但该应用程序未列在“不允许电池优化”应用程序列表中。(注意:当设备重启时添加的应用不允许电池优化)

这是代码:

请就这种不同的行为提出建议。如果有解决方案,请告诉我。它变得令人沮丧。

0 投票
1 回答
543 浏览

android - 打盹模式对我的应用至关重要

我认为这个问题在stackoverflow中被问了很多次,但仍然有很多人在努力解决它。

在我的 android 应用程序中,我必须每 30 分钟唤醒一次设备才能获取当前位置并将其发送到服务器。为此,我使用了具有 setExactAndAllowWhileIdle() 方法和 WakefulBroadcastReceiver 的 AlarmManager。它在几乎所有标准/流行设备中都可以正常工作,但其他一些设备主要是中国设备不支持或不允许使用 setExactAndAllowWhileIdle() 从打盹模式唤醒设备。我已经在 Moto G4 plus(Android OS 6.1) 设备中对其进行了测试,该设备不允许警报管理器在特定时间间隔唤醒。

我正在使用AlarmManager 调用wakefulBroadcastReceiver,它会触发wakefulIntentservice 来执行后台任务。但它严重耗尽电池并且处于打瞌睡模式(牛轧糖),它不执行后台任务。除此之外,它从后端服务捕获数据。

我也用过 PowerManager-->

0 投票
4 回答
6361 浏览

android - 打瞌睡时在后台运行应用程序

应用程序正在运行 SDK 23 及更高版本。在完成任务并使用 AlaramManager (setExactAndAllowWhileIdle) 安排下一个任务后,我正在使用 Service 运行一些任务。这工作正常。如果手机连续闲置 2 或 3 天,则进入打盹模式。打盹模式后,应用程序失去网络和唤醒锁也无法正常工作。

有没有办法即使手机是打瞌睡的,我们可以在任何网络插入问题的情况下运行应用程序。我试图保留应用程序 witelist,但我需要设备被植根。

谁能建议我不间断地运行应用程序的最佳方式?

0 投票
2 回答
568 浏览

android - 如果应用程序在后台运行,则失去网络 android 6 及更高版本

我正在运行服务后台以使用 AlaramManager (setExactAndAllowWhileIdle) 以一定间隔执行一些任务。如果它连接了电源充电器,它正在运行。但是,如果它在某些情况下拔掉了设备电源,我的应用程序就会失去网络。

即使设备空闲,警报也会唤醒服务。但我的应用程序没有网络。

根据https://developer.android.com/training/monitoring-device-state/doze-standby.html# 它在手机空闲时限制网络。我在应用手机空闲时进行了同样的测试($ adb shell dumpsys battery unplug )

但是,即使手机处于空闲模式,是否有可能获得对我的应用程序的网络访问权限。

应用程序不是游戏商店。它真的适合建议。

0 投票
2 回答
2346 浏览

android - 从 android marshmallow 的白名单中删除应用程序

我没有找到有用的信息如何以编程方式或使用设备设置从白名单中删除特定应用程序。

在 android 6.0 中引入了 doze-mode 和 while-listed,最后一个术语允许忽略部分 doze-mode。

要将应用程序放入白名单应用程序需要执行代码:

我尝试了下一步操作以将应用程序从刚刚放入的白名单中删除,但没有任何帮助:

  1. 在设置中清除数据应用
  2. 删除应用程序并重新安装

要检查同时列出的应用程序的当前列表,可以使用 dumpsys

真正的帮助是更改应用程序的包名称。我的观点是,如果应用程序被列入白名单,那么它就永远不能从那里删除。

手机魅族U680h。在另一台设备上没有测试。