WiFi打开流程(详细)

本文详细介绍了安卓设备中WiFi打开的流程,从WifiEnabler类开始,涉及WifiManager的AIDL接口、WifiServiceImpl的权限判断、WifiController的状态机管理、ActiveModeWarden的ModeStateMachine以及ClientModeManager的状态变迁,最终在ClientModeImpl的mConnectModeState状态进行连接管理。
摘要由CSDN通过智能技术生成

WiFi打开流程(详细)

首先,与Wifi相关的类WifiEnabler管理着WiFi打开/关闭/扫描等事项。那么WiFi打开流程必然是从WifiEnable这个类开始的。(由于列出全部方法体会使篇幅较长,故只列出重要部分,但读者可参照类名与方法名找到具体方法实现。)
wifi/WifiEnabler.java:点击wifi开关后

public boolean onSwitchToggled(boolean isChecked) {
       if (!mWifiManager.setWifiEnabled(isChecked)) {//private WifiManager mWifiManager
            mSwitchWidget.setEnabled(true) 
}

WifiManager.java:

public boolean setWifiEnabled(boolean enabled) {
	return mService.setWifiEnabled(mContext.getOpPackageName(), enabled);//IWifiManager mService
}

在这里 使用了AIDL接口,BaseWifiService extends IWifiManager.Stub,那么其实调用的是BaseWifiService的setWifiEnabled方法,但是利用多态则调用的是(WifiServiceImpl extends BaseWifiService )WifiServiceImpl的setWifiEnabled方法。

WifiServiceImpl.java:
在这个方法中判断了当下是不是飞行模式、有没有权限等等。

public synchroni
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值