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

android - 如何在我的应用打开且屏幕打开时允许 Android 打瞌睡?

我正在制作一个应用程序,该应用程序将在设备锁定时运行,通过Activity#setShowWhenLocked(true). 我不想阻止设备进入低功耗状态。我知道系统使用 来执行此操作Always-On Display,并且显示器具有相关的电源模式:

/frameworks/base/core/java/android/view/Display.java

/frameworks/base/core/java/android/os/PowerManagerInternal.java中也有此部分:

如果可能的话,我想避免使用 root来执行此操作,但如果所有其他方法都失败了,我可以使用这些命令手动控制打瞌睡,但这听起来很混乱,我不想弄乱任何其他应用程序的打瞌睡交互。

此外,我只特别关注 Android Pie (9.0) 及更高版本。

更新:

我也试过获取一个DOZE_WAKE_LOCK,但它需要系统权限DEVICE_POWER。我尝试adb shell pm grant了对我的应用程序的权限,但它不是可更改的权限类型。

0 投票
0 回答
410 浏览

android - Android 唤醒锁在打盹模式后仍然存在?

我正在尝试在我的应用程序在后台运行时模拟打盹模式。

发生的情况是线程将继续运行,即使设备已进入打盹模式。文档指定忽略唤醒锁,那么为什么 cpu 仍然打开?

测试: 带有 Api 27 的模拟器

服务

壳:

0 投票
2 回答
1236 浏览

android - 前台服务能否在睡眠模式下存活(不是打盹模式)?

所以我在打瞌睡期间阅读了很多关于 android 服务及其生命周期的帖子。

至今:

后台服务受打盹模式的限制。

前台服务不受打盹模式的影响。这意味着他们继续拥有访问网络等。

有很多关于打盹模式和前台服务的帖子,但没有一个是指当睡眠模式启动时前台服务会发生什么。

睡眠模式- 意味着 CPU 将处于睡眠状态,并且不会接受除 RIL(无线电接口层)和警报之外的任何命令。LCD 关闭后,CPU 将在几秒钟内进入睡眠模式。

打盹模式- 意味着您手机上的应用程序将无法访问网络,当应用程序试图阻止设备进入睡眠状态时,系统将忽略“唤醒锁”,并且不允许运行任何后台任务。这肯定会让你的手机听起来对你没有多大好处,但是 Doze 有几种方法可以保留功能。虽然应用程序无法唤醒设备以运行同步作业和其他后台任务,但仍会显示高优先级推送消息。例如,一条环聊消息将出现在处于打盹模式的设备上。

应用待机- 进入待机状态的应用会失去所有网络访问权限,并且其所有后台同步作业都会暂停。当您的手机插入电源时,这些限制会暂时解除,并且每天或每两天持续几分钟。这使暂停的应用程序有机会运行任何挂起的同步作业,但不允许它们继续运行。高优先级推送通知也将能够在短时间内将应用程序从待机状态唤醒。

问题:

  1. 前台服务在睡眠模式下也会暂停吗?如果是,他们是重新开始还是从中断的地方继续?
  2. 当前台服务处于活动状态时,设备是否会进入睡眠模式?
0 投票
1 回答
609 浏览

android - Ble beacon Android Oreo 和 P 未从打盹模式唤醒应用程序

我有一个使用蓝牙信标的应用程序。当应用程序处于打盹模式时,来自蓝牙信标的接近通知不会唤醒手机。只有当我解锁手机时才会发送通知。对于已被杀死的前台或应用程序,此问题是相同的。

0 投票
2 回答
226 浏览

android - Android 使用线程执行后台作业

我读过很多帖子,说打瞌睡模式在链接前的特定时刻杀死了一个正在运行的服务,或者他们想要执行一个长时间运行的线程。

我不明白为什么你应该使用服务来做你知道在某些时候它最终会停止的后台工作。

例如:

你可以使用一个简单的线程:

并在其中做一些工作。使用这个:

  1. 结合唤醒锁,设备不会休眠,线程将继续运行。
  2. 没有打瞌睡模式限制(网络除外,但可以说我们做本地事情)

因此,您可以不受任何限制地进行后台工作。尽管出于这些原因您应该使用服务链接

这是做背景工作的另一种方式(当然不是更好,但仍然是一种方式)吗?我错了吗?

0 投票
1 回答
431 浏览

android - 使用 JobService 和 STEP_COUNTER 传感器计算步数

我在我的应用程序中实现了步数计数功能。我使用了一个监听 Sensor.TYPE_STEP_COUNTER 事件的 JobService,它正在工作。我有 2 个问题,也许有人可以提供帮助:1)如果应用程序不是每天都打开,由于打盹模式,它会被杀死,这会阻止 JobService 监听传感器事件——所以我不能继续计算步数. 我目前不想“唠叨”用户,所以我不想让他们打开应用程序。2)如果每天打开应用程序,步数完全计数,但电池警报响起。我尝试增加 JobService 的周期性时间,并且我还尝试对传感器使用批量读取——这并没有改变太多的电池,而且它计算的步数比以前少。

任何人都可以帮助解决这些问题吗?

0 投票
1 回答
604 浏览

android - 在打盹模式下保持 ForegroundService 活动

运行前台服务不会阻止设备进入睡眠状态。您必须需要唤醒锁。这是否也适用于打盹模式?

例如:您运行前台服务,然后关闭设备的屏幕。一般来说,doze的模式限制不适用于网络暂停等前台服务。

所以我的问题是,你是否需要在打盹模式下为前台服务保持唤醒锁?

我有点困惑,因为打盹模式会忽略唤醒锁,除非如果对前台服务设置异常。

0 投票
1 回答
454 浏览

android - 前台服务会在打瞌睡模式的非唤醒时间工作吗

Android前台服务是防止应用进入App Standby模式的好机制,但前台服务即使在Doze模式下也能工作?

我的意思是,不是打盹模式的短暂唤醒周期,而是打盹模式的大部分睡眠时间。它会在这么深的睡眠时间起作用吗?

有人说前台服务不受打盹模式的影响打盹模式 如何影响后台/前台服务,有/没有部分/全部唤醒锁?

但是有些人(以下链接中的评论)说前台服务也停止在打盹模式 打盹模式和前台服务

谁是对的?

0 投票
0 回答
127 浏览

android - Android - 即使设备处于打盹模式,音乐应用程序如何继续在网络上流式传输?

在阅读了有关 Android 中打盹模式的官方文档后,有人知道当设备进入打盹模式(因此网络不可用)时,音乐应用程序如何在技术上从 Internet 流式传输曲目?

0 投票
0 回答
1167 浏览

android - 在设备设置中打开特定应用的电池优化活动

我正在使用 WorkManager 库来安排后台任务,并防止应用程序休眠,从应用程序打开电池优化部分,供用户手动禁用我的应用程序的优化。问题是即使选择了“不优化”选项,应用程序仍然处于休眠状态并且工作尚未完成。此外,当通过设备设置中的应用信息页面打开电池设置时,即使在之前的活动中更改为“不优化”,它也会显示“已优化”。

另外,通过代码打开的电池优化页面有一个包括系统应用在内的所有应用的列表,而通过应用信息打开的只有一个已安装应用的列表。

有没有办法通过代码进入第二个电池优化页面。因为如果禁用优化,则应用程序运行正常。