问题标签 [android-doze-and-standby]

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 投票
1 回答
795 浏览

android - Android后台服务位置更新和Doze

我的应用程序可以让人们在开车时记录路线。为确保实际记录位置,我使用 aservice以便即使活动被终止也会记录它们。为了避免设备进入打瞌睡状态,这意味着不会频繁更新位置,我持有唤醒锁。

这些步骤是否足够?或者我是否需要明确禁用电池优化(https://developer.android.com/training/monitoring-device-state/doze-standby.html)以确保我不会丢失位置更新?根据文档,我的应用程序似乎是一个“可接受的”用例。

0 投票
0 回答
142 浏览

android - Android,如何在 idle_maintenance 模式下检测并执行任务?

当设备处于打盹模式时,我需要发送跟踪信息。

根据page monitoring-device-state有idle 和idle_maintenance,我知道当它在idle_maintenance 窗口时,应用程序可以执行任务。在我的情况下,我想获取跟踪信息并发送到我的服务器,但是当有空闲或 idle_maintenance 窗口时,我的应用程序处于阻塞状态。

如何在模式 idle_maintenance 下执行任务?

或者

我可以使用什么库?

或者

有什么例子吗?

首先,谢谢。

0 投票
1 回答
4353 浏览

android - 是否可以完全禁用打盹模式和待机模式?

我需要创建一个应该 24/7 运行的应用程序。我不关心电池消耗,因为应用程序不会提交到 PlayStore 并且它只适用于选定的用户。我也理解应用程序只会持续一天,这在我的情况下是可以接受的。

应用程序功能主要依赖于网络和蓝牙功能,并且大部分代码都是用 pre marshmallow 编写的,并且更改整个实现现在对我来说不是一个正确的选择。

那么有什么方法可以不受限制地创建应用程序吗?此外,正如观察到的,一些设备制造商增加了额外的电池优化层,使情况变得更糟。

我试图创建一个带有部分唤醒锁的虚拟前台服务,但这似乎不起作用。甚至将应用程序列入白名单也不能解决问题。

谷歌没有关于打瞌睡/待机会影响哪些功能的适当文档。根据谷歌文档,后台任务不会被暂停,它只会推迟到下一个维护窗口。如果是这种情况,App 应该能够打印在打盹期间错过的所有应用程序。但正如观察到的那样,应用程序只会在维护窗口期间打印日志。这将打破预期的行为。

白名单是一个不错的选择,但应用程序仍会受到打盹模式的影响。即使用户明确选择不限制应用程序行为的原因是什么?当应用程序在不同的设备操作系统、制造商等中表现不同时,这非常令人沮丧。

对不起这个故事。我想了解有没有办法在不改变现有实现的情况下完全禁用打盹和待机模式?我浏览了各种文件,但没有办法达到这个 100%。请分享你的想法

0 投票
1 回答
3559 浏览

android - 即使从“未优化的应用程序”中删除 PowerManager.isIgnoringBatteryOptimizations 也始终返回 true

我有一个里程日志应用程序,它可以进行 GPS 跟踪,并且能够在后台建立与汽车的 OBDII 连接。

现在我想显示一个弹出窗口,通知用户如果我的应用程序没有被列入白名单,因为这可能会停止我的后台(实际上是前台)服务......

我愿意:

但 PowerManager.isIgnoringBatteryOptimizations 始终返回“true”,即使它再次从“未优化的应用程序”中删除。仅当我卸载应用程序'false' 再次返回...在 Galaxy Note 8 (Android 8.0) 和 Emulator 8.1 上测试

问题很简单:这是一个错误吗?或者如何从白名单中删除应用程序,以便 PowerManager.isIgnoringBatteryOptimizations 再次返回“假”?

0 投票
1 回答
79 浏览

android-wear-2.0 - 待机和环境在 Android 中是相同的

在 Android 智能手表中,如果设备不交互,则手表将从交互模式进入环境模式

在此 Google 链接https://www.youtube.com/watch?v=Rwshwq_vI1s中,他们仅解释了 App StandBy 和 Doze 模式

我的查询是 Android Wear App 流程将来自 Interactive -> Ambient -> StandBy

或者

App Standby 和 Ambient 都一样吗?

0 投票
1 回答
114 浏览

android - 长时间不活动后打开推送消息

我有一个使用推送的 android 应用程序。如果应用程序从服务器接收到推送消息,它会创建一个推送通知(带有标题、消息、图标)并将其呈现给用户。

正常情况 单击通知会打开一个活动(不是启动器),活动会打开一个片段,该片段显示基于通知的内容。这里没有魔法,一切都按预期工作。

特殊/坏情况 如果设备至少 2 小时处于非活动状态并且您拿起它并单击之前推送的通知,那么它会像正常情况一样打开 Activity 但没有片段出现。相反,将调用启动器。

虽然调试这既费时又令人沮丧,但我发现了以下几点。也许有人有一个想法:

  • 活动通常以我从资源加载的动画开始。我在 onCreate() 中加载并运行它。如果 Activity 被推送调用,那么动画将被加载但永远不会运行。我用一个等待 2 秒并检查动画监听器是否被调用的处理程序绕过了这个。如果不是(坏情况),则处理程序调用代码来打开片段。

  • 打开片段导致崩溃:IllegalStateException:onSaveInstanceState 后无法执行此操作。类似于这里Exception java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState所以我替换了 commitAllowingStateLoss()。现在没有崩溃了,但片段没有出现。只有 Fragment.newInstance() 将被调用,但不会调用 onCreate() 或任何其他生命周期方法。

问题:长时间不活动后似乎破坏了我的代码中的函数的疯狂状态是什么?

设备:我目前正在使用带有 Android 6.0.1 的 Nexus 5 进行测试

0 投票
1 回答
1497 浏览

android - 以编程方式避免打盹模式

我正在开发一个 Android 应用程序,它使用小米手环 1S 来一直测量心率。我使用一个服务来处理蓝牙连接,并且我已经实现了在应用程序关闭时保持该服务处于活动状态,甚至在重新启动移动设备时重新启动该服务。

现在,我的问题来自 android 打盹模式。我正在使用以下技巧来保持服务活着:

  • 唤醒锁的使用
  • 使用 wakefullBroadcastReceiver 在使用以下过滤器关闭时重新启动服务:
    • "android.intent.action.BOOT_COMPLETED"
    • "android.intent.action.QUICKBOOT_POWERON"
    • 我自己的意图在应用程序关闭时调用,并且每 10 分钟发出一次警报。
  • 以编程方式要求忽略电池优化。

代码

问题

我的手机是小米。BOOT_COMPLETED和,都IGNORE_BATTERY_OPTIMIZATIONS不起作用。它们仅在我手动设置权限时才有效。我还向清单文件添加了所需的权限。

那么有没有办法允许这些权限,而无需用户手动设置它们?默认情况下,WhatsApp 或 Skype 等应用程序具有这些权限。为什么我不能这样做?

此外,这也发生在小米手机上。它也会发生在所有其他移动设备上吗?

0 投票
1 回答
334 浏览

android - 如何在打盹模式下检测维护窗口将关闭事件?

我想开始努力Worker.class,但是当手机切换到打盹模式然后维护窗口有时没有足够的时间来完成作业,我需要一个事件来关闭计时器并保存数据库

0 投票
2 回答
5296 浏览

android - Workmanager 在待机和打盹模式下不工作

我正在使用 WorkManager 来安排我的通知,它在我的智能手机处于活动状态时工作,但在我的智能手机处于待机状态时它不起作用。为什么?有一些限制让我这样做?管他呢?

CoreActivity.java中的方法notifyPush

NotifyWorker.java

MovieAdapter.java中的方法scheduleNotifydeleteNotify

0 投票
1 回答
2145 浏览

android - 退出安卓打盹模式

我在我的应用程序中使用 Android 打盹模式,只想检查我的应用程序在打盹模式下的行为。

我的应用程序在打瞌睡模式下将一些任务排入作业调度程序。我想检查是否有任何事件唤醒设备,触发我的应用程序在打瞌睡时放入作业调度程序的作业。

我通过触发以下命令以编程方式将设备置于打盹模式 -

我还尝试了另一组命令将其置于打盹模式

上述命令将设备置于深度空闲模式,我使用命令检查它 -

输出:空闲

但即使我打了一个电话,打开设备屏幕并振动设备,设备状态也不会改变。上面的命令连续给我 IDLE 状态。

问题:

我可以模拟我将设备置于瞌睡状态(通过触发一些命令)然后设备将通过 android doc 声明的某些事件(移动它、打开屏幕或连接充电器)来打瞌睡的场景吗? )。

编辑

我做了很多研究后的观察-

当我们将设备编程为进入深度空闲模式时,除非使用命令明确完成,否则设备不会退出打盹模式 -

因此,即使您发送短信或拨打设备会导致
- 设备屏幕打开
- 设备振动

但是因为如果以编程方式设置为空闲模式,它会持续保持在相同的状态。