Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
在Wifi的整个过程中,有个函数一直会被调用到: setNetworkDetailedState(),它是用来和系统的ConnectivityService关联的,作用是为了告知系统当前wifi的状态,因为系统里存在多个网络,如有线网,数据上网等,像平常我们使用PC的时候,当有线网和wifi同时连着的时候,会优先选择wifi,Android系统的机制也是类似的。
因此wifi子模块通过setNetworkDetailedState()来告知系统当前连接状态以决定是否需要切换网络,而且同一时间只能有一个网络工作。
当断开wifi时,会调用
handleNetworkDisconnect -> setNetworkDetailedState(DetailedState.DISCONNECTED)
这时参数是DetailedState.DISCONNECTED
WifiStateMachine.java
private boolean setNetworkDetailedState(NetworkInfo.DetailedState state)
{
//新旧状态不一致时,要重新设置
if (state != mNetworkInfo.getDetailedState()) {