AnroidP在WiFi连接的时候,偶尔会出现断开现象,并打印下列log
W/IpClient.wlan0: [IpReachabilityMonitor] WARN ALERT neighbor went from: NeighborEvent{@2534961,RTM_NEWNEIGH,if=23,fe80::1,NUD_PROBE,[<MYMACHERE>]} to: NeighborEvent{@2537970,RTM_NEWNEIGH,if=23,fe80::1,NUD_FAILED,[null]} W/IpReachabilityMonitor: FAILURE: LOST_PROVISIONING, NeighborEvent{@2537970,RTM_NEWNEIGH,if=23,fe80::1,NUD_FAILED,[null]}
从log上来看系统有开启IpReachabilityMonitor 机制,可能是在干扰严重环境下或相对弱信号下让系统误判导致下断线
关闭 IpReachabilityMonitor 强制断连机制
方法1:
在源码中修改成默认disable
Android 7
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java
- private boolean mIpReachabilityDisconnectEnabled = true;
+ private boolean mIpReachabilityDisconnectEnabled = false;
Android 11
frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java
- private boolean mIpReachabilityDisconnectEnabled = true;
+ private boolean mIpReachabilityDisconnectEnabled = false;
方法2:
用指令临时修改
adb root
adb shell cmd wifi get-ipreach-disconnect
adb shell cmd wifi set-ipreach-disconnect disabled