5.2.2 WifiService构造函数分析
最后更新于:2022-04-02 06:03:43
WifiService构造函数的代码如下所示。
**WifiService.java::WifiService构造函数**
~~~
WifiService(Context context) {
mContext = context;
// 从系统属性“wifi.interface”中取出无线网络设备接口名。默认值为“wlan0”
mInterfaceName = SystemProperties.get("wifi.interface", "wlan0");
// 创建一个WifiStateMachine对象,它是WifiService相关模块中的核心
mWifiStateMachine = new WifiStateMachine(mContext, mInterfaceName);
/*
RSSI轮询机制。RSSI为Receive Signal Strength Indication(接收信号强度指示)
的缩写,它反映了无线网络质量的好坏。WPAS支持的RSSI信息包括:接收信号强度、连接速度
(link speed)噪声强度(noise)和频率。在WPAS中,RSSI信息由wpa_signal_info
结构体来表达。
*/
mWifiStateMachine.enableRssiPolling(true);
// 和BatteryStatsService交互。感兴趣的读者可阅读《深入理解Android:卷Ⅱ》5.5.2节
mBatteryStats = BatteryStatsService.getService();
......// 广播事件注册等处理。由于篇幅问题,本章将略去一些重要程度较低的代码
HandlerThread wifiThread = new HandlerThread("WifiService");
wifiThread.start();
// mAsyncServiceHandler用于AsyncChannel,其交互对象来自WifiManager
mAsyncServiceHandler = new AsyncServiceHandler(wifiThread.getLooper());
// mWifiStateMachineHandler也用于AsyncChannel,其交互对象来自WifiStateMachine
mWifiStateMachineHandler = new WifiStateMachineHandler(wifiThread.getLooper());
......// 其他一些工作
}
~~~
WifiService构造函数中主要工作是创建一些核心对象,其中:
* WifiStateMachine是WifiService中的核心,是本章分析的重点对象。
* mAsyncServiceHandler和mWifiStateMachineHandler都和AsyncChannel相关,与它们交互的Handler分别位于WifiManager和WifiStateMachine中。
马上来看最重要的WifiStateMachine。
';