问题标签 [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 投票
0 回答
455 浏览

java - 倒数计时器运行时禁用打盹模式

我正在开发一个应用程序,countdown-timer当用户启动计时器时,它正在运行一切都很完美现在问题是当用户锁定他的设备(打盹模式或睡眠或空闲)时计时器卡住了。

如果有人知道如何在计时器处于活动状态时防止我们的应用程序进入打盹模式,请提供帮助。

0 投票
1 回答
189 浏览

android - Android:Android 7.0 操作系统能否在打盹模式下取消应用发出的网络请求

我有一个 Android 应用程序,我在我的应用程序进行的网络调用中看到了这种特殊模式。应用程序启动时,设备会正确发送 http 请求。但过了一段时间,我开始在日志中看到很多 java.io.IOException: Canceled。我没有取消订阅这些改造电话,也没有在代码中取消它们。

有没有可能,Android 7.0 打瞌睡模式实际上可以取消网络请求?

提前致谢。

请给出拒绝投票的理由,以便我可以改进我的问题。

0 投票
1 回答
110 浏览

android - Android:在 Android 7.0 中,我可以向我的应用发送多少次高优先级 GCM?

我有一个 android 应用程序,我正在使用 GCM。我将它升级到 FCM。但是现在,我可以发送多少次高优先级 GCM,或者为了它 FCM 以便它可以在一小时内完成一些网络请求。

0 投票
0 回答
1009 浏览

android - JobIntentService 退出 Doze 模式后再次运行

JobIntentService在 Nexus 5X (Android 8.0) 上运行来自 Google 的以下示例

该服务被添加到 AndroidManifest.xml 中,如下所示。

在正常情况下,服务按预期运行,在退出之前循环循环。

现在我运行以下 adb 命令来测试打盹模式

编辑 这里是服务启动然后强制进入打盹模式的日志

它清楚地调用onDestroy(),但稍后继续循环循环。我了解系统会定期退出打盹模式以让应用程序执行延迟活动。在 Doze 模式下服务完成后,运行以下 adb 命令退出 Doze 模式

编辑 这是执行上述 adb 命令时的日志

JobIntentService 会再次执行,尽管它之前已完成。这是可接受的行为吗?还是我错过了什么?帮助我了解 JobIntentService 的工作原理

0 投票
1 回答
481 浏览

android - BroadcastReceiver 无法访问互联网

我的广播接收器出现问题。

我已经设置了早上 6 点的闹钟,它必须启动我的广播接收器,它只需要从互联网上下载一些数据并进行处理。

例如,如果我将闹钟设置为下午 3 点,它就可以正常工作。但问题是在早上 6 点,下载失败,因为它没有网络连接。

我在尝试下载之前执行了部分唤醒锁定。会不会和这个有关?手机进入深度睡眠和部分唤醒锁定是否不够?

还能是什么?我已经仔细检查过启用网络数据的手机,并且我确实在夜间收到电子邮件和whatsapp。

有没有办法让android恢复连接?

任何提示或帮助都非常受欢迎!

最好的问候,费德里科。

我的代码:

来自 BroadcastReceiver 的 OnReceive 方法:

_Utils.isDataEnabled:

0 投票
1 回答
802 浏览

android - Android 闹钟未设置

我曾经在其他项目中使用以下代码段设置警报作为重复和非重复,但现在让我抓狂的是,我犯了一个愚蠢的错误,因为警报与我当前的实现无关:\ :

IntentService 类如下:

该服务在清单中声明为:

以下是提到的 log insidesetAlarm()方法的示例:

这对我来说曾经是一个直截了当的代码,但是在这 3 天的测试会话中,我可能会缺少哪个基础知识?

0 投票
0 回答
672 浏览

android - 在模拟器上打开打盹模式时它不起作用

当我使用 adb shell 在 android 模拟器上打开打盹模式时,它只是冻结。我无法重新启动它,模拟器重新启动也无济于事。

我使用以下命令打开打盹模式:

以及以下将其关闭:

0 投票
1 回答
114 浏览

android - 应用程序在 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 上冻结一秒钟

我正在开发一个需要有效工作服务的应用程序,因此为了避免打盹模式,我编写了代码,该代码将显示一个默认对话框,询问该应用程序是否会消耗更多的电池电量。但这里的主要问题是在显示对话框应用程序冻结一两秒钟然后继续之前。我想知道有什么问题。这是我写的代码 -

0 投票
1 回答
1336 浏览

android-6.0-marshmallow - 了解和测试 Android M+ 打盹模式

我正在努力使我的 Android 应用程序成为后 Android M 世界的好公民,这对设备进入打瞌睡时应用程序可以/不能做什么施加了严格的限制。我对所涉及的问题的理解仍然比较零散,所以我希望这里有人可以填补空白。

打瞌睡的持续时间

我自己的经验发现在这里

  • 打瞌睡会在静止、屏幕关闭、不活动的大约半小时内开始
  • 第一个维护窗口在 30 分钟内发生
  • 下一个发生在大约一个小时内
  • 在 ca 2、4 和 6 小时之后的那些。除此之外,我还没有测试过

这些是官方的 Android 打瞌睡期还是只是一种经验观察。

以上所有内容都在 Android N 设备上。

在打盹模式下测试应用程序

  • 使用 ADB 将设备连接到计算机
  • 将应用程序置于前台
  • 关闭设备屏幕
  • 从命令行问题adb shell dumpsys battery unplug
  • 现在循环通过命令`adb shell dumpsys deviceidle step light OR deep
  • 最后发行adb shell dumpsys battery reset

进入/退出打瞌睡

  • 当屏幕关闭且设备未移动时发生

  • 大概这使用了手机中的运动传感器,所以手机安静地坐在一辆非常平稳的火车上仍然会打瞌睡?

  • 如果我拿起一部打瞌睡的手机并开始带着它四处走动而没有与之交互,它会自动退出打瞌睡吗?

  • 假设我的应用程序在其主机设备进入休眠状态时不在前台。然后我再次开始使用该设备,但没有访问该应用程序。它会自动重新开始“工作”吗,即

  • 它的广播接收器会变得实用吗?

  • 它的处理程序将开始工作?

  • 它的预定作业setRequiresDeviceIdle(true)停止被调用?

打瞌睡和作业调度的各种模式

  • 据我了解,有两种打瞌睡模式 LIGHT 和 DEEP。他们都有子模式

  • 灯光:活动、空闲、空闲维护、覆盖。我不明白各种模式的作用。从 ADB 我已经step light在屏幕上发出并看到了返回值ACTIVE。随着屏幕关闭step light返回IDLE

  • DEEP : Active,IDLE_PENDING,SENSING,LOCATING,IDLE,IDLE_MAINTENANCE 屏幕打开也返回ACTIVE,但屏幕关闭它返回IDLE_PENDING。那么其他子模式,IDLE,SENSING...什么时候发生呢?

我假设IDLE_MAINTENANCE当设备从 DOZE 进入维护窗口并尝试运行来自各种应用程序的待处理作业请求时会发生这种情况。

但是,如果是这种情况,为什么在我的应用程序中的计划作业运行时检查它们PowerManager.isDeviceIdleMode()并且PowerManger.isPowerSaveMode() 总是返回?false

JobInfo.Builder非常友好地允许您设置标准setMinimumLatencysetOverrideDeadline但据我所知,OS hen 会轻松地忽略它们 - 有时我的工作在几秒钟之内运行,而在其他时间则相隔两个小时。

为什么没有 API 函数来测试 Doze 及其子模式?我希望能在其中找到它,PowerManager但我发现的所有东西,isDeviceIdleMode并且isPowerSaveMode在测试时始终返回 false

打盹模式下的应用程序

  • 是否会破坏其所有后台服务?

  • 会不会得到正常的优先级推送消息?

  • 不会响应警报 - 但除了setAndAllowWhenIdle?

  • 会不会从它的任何广播接收器那里得到任何通讯?

  • 将无法通过套接字连接到外部世界 - 所以推送消息、发布/订阅等将不起作用?

  • 将立即销毁 Android 清单中声明的​​任何广播接收器。这是我自己的发现——我从 Java 代码创建的接收器保持不变,尽管它们在打瞌睡时不起作用。

我自己的应用程序通过设置广播接收器和调用来监视地理位置的变化.FusedLocationApi.requestLocationUpdates。该接收器在打盹/唤醒周期中幸存下来。但是,是否可以保证我的LocationUpdates请求在醒来后仍然得到兑现?

我遇到了一个相当奇怪的错误。我发现我在打瞌睡中安排的工作在某些情况下运行得太近了,即使我给它们提供了 900,000 毫秒(15 分钟)的延迟和 1,000,000 毫秒的截止日期。我想我可以通过跟踪我所做的最后一次运行时间来测试最后一次运行作业的时间来解决这个问题

然后中止工作槽

但是,我发现当我经历屏幕关闭屏幕打开周期时,如果它在屏幕上,此代码会导致操作系统突然终止我的应用程序。为什么会这样?

最后,是不是没有一个 API 调用我可以用来测试设备刚刚从打瞌睡中返回,所以我有机会做一些打瞌睡后的家务?

0 投票
1 回答
795 浏览

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

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

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