我的问题很简单。我想知道我的应用程序的最佳做法是什么,以便它可以防止"打瞌睡"。随着Android N将在更多情况下应用Doze,这变得更加相关。
在阅读Doze Documentation时,有一部分提及网络访问:
在打盹模式下,系统会尝试通过限制来节省电池电量 应用'访问网络和CPU密集型服务。它也可以防止 应用程序访问网络并推迟他们的工作,同步和 标准报警。
我相信 Buetooth 属于网络访问,这是正确的吗?
由于我没有启用Marshmallow(或Android N)设备,并且由于Emulator不允许蓝牙交互,因此无法在打盹模式下测试我的应用行为。
打盹模式会杀死任何正在进行的蓝牙连接吗?这同样适用于Bluetooth Classic和LE吗?带蓝牙A2DP的耳机怎么样?
我的应用必须维持此连接,否则核心功能将被破坏。
当然,对于这种情况存在某种例外情况,即用户需要将设备连接到蓝牙远程设备的时间也是如此。
我知道存在 Doze Whitelist ,但在某些情况下,它可能不会让应用程序在API 23以下的设备上运行。
感谢您的帮助!
答案 0 :(得分:0)
看起来打瞌睡对蓝牙本身没有任何限制,但要做任何有意义的事情,你需要保持cpu并且在更深的打瞌睡中忽略唤醒锁。
如果它是您应用的核心功能,您可以尝试让用户whitelist您的应用。这可以授予partial wake locks并保持cpu开启。
Foreground services也免除任何打盹限制,因此这是另一种透明的方式。