5.2.2 WifiService构造函数分析
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。