当设备未连接到充电器时,java NetD会破坏插座
我有一个非常恼人的问题,我不明白发生了什么:
我们正在编写一个库,通过蓝牙建立一个socket。之后,我们在localhost上注册一个服务器。现在有几个应用程序正在建立与本地主机的连接并发送/接收数据。服务器正在绑定连接并通过蓝牙处理通信
自从安卓7.0以来,我们就遇到了这个问题NetD
经常破坏本地主机的socket。我们可以在Logcat中看到以下输出:
> 06-23 12:38:17.576 522 2676 I Netd : Destroyed 3 sockets for UidRanges{ 10000-2147483647 } skip={1001 1027 10010 10013 10018 10021
> 10035 10037 10064 10081} in 1.2 ms
所有设备都运行库存ROM,我对其进行了以下测试:
- 三星S7
- 三星S8
- Nexus 5x
- 三星S6
- 谷歌像素
我很确定,这是一种节省电池的机制,因为在给设备充电时不会发生这种情况
我希望任何人都能帮助我理解这里发生的事情
# 1 楼答案
我相信这个问题来自Android 6.0 API级别23中引入的新
Doze
功能打盹限制
打瞌睡时,以下限制适用于你的应用程序:
话虽如此,从技术上讲,你有两个选择——拥抱打瞌睡,与之抗争
拥抱睡意
过一遍Optimizing for Doze and App Standby
打瞌睡
将
dumpsys deviceidle disable
和idle_to
设置为1秒(相关比例因子设置为1)的组合将有助于禁用它。请参阅此xda-developers post