Android打盹模式 - 蓝牙

Mac*_*ich 5 android bluetooth android-6.0-marshmallow android-doze android-7.0-nougat

我的问题很简单.我想知道我的应用程序的最佳做法是什么,以便它可以"防止打瞌睡".随着Android N将在更多情况下应用Doze,这变得更加相关.

在阅读Doze文档时,有一部分提到了网络访问:

在打盹模式下,系统会通过限制应用程序访问网络和CPU密集型服务来尝试节省电池电量.它还可以防止应用程序访问网络并延迟其作业,同步和标准警报.

我相信Buetooth属于网络访问,这是正确的吗?

由于我没有使用Marshmallow(或Android N)设备,并且因为Emulator不允许蓝牙交互,所以我无法在打盹模式下测试我的应用行为.

Doze模式会杀死任何正在进行的蓝牙连接吗?这同样适用于Bluetooth Classic和LE吗?带蓝牙A2DP的耳机怎么样?

我的应用必须保持此连接,否则核心功能将被破坏.

当然,对于这样的情况,存在某种例外情况,即用户需要将设备连接到蓝牙远程设备.

我知道存在一个打盹白名单,但在某些情况下,似乎可能不会让应用程序在API 23以下的设备上运行.

谢谢您的帮助!

Raj*_*rma 0

看起来打瞌睡本身对蓝牙没有任何限制,但要做任何有意义的事情,您需要保持 CPU 开启,并且在更深的打瞌睡中会忽略唤醒锁。

如果这是您应用的核心功能,您可以尝试要求用户将您的应用列入白名单。这可以授予部分唤醒锁并保持 CPU 开启。

前台服务也不受任何瞌睡限制,因此这是另一种透明的方式。