5.2 WifiService的创建及初始化
WifiService在SystemServer进程中被创建,代码如下所示。
[—>SystemServer.java::ServerThread:run]
- public void run()
- ......
- try {
- wifi = new WifiService(context);// 创建一个WifiService对象
- ServiceManager.addService(Context.WIFI_SERVICE, wifi);
- }......
- try {
- connectivity = new ConnectivityService(
- context, networkManagement, networkStats, networkPolicy);
- ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity);
- ......
- /*
- 检查是否需要启动Wi-Fi。如果关机前Wi-Fi是打开的,则重启后Wi-Fi功能将在此函数中打开
- 该函数比较简单,其中有一处涉及WifiWatchdogStateMachine的代码。留待5.4节介绍。
- */
- wifi.checkAndStartWifi();
- wifiP2p.connectivityServiceReady();
- } ......
- ......
由上述代码可知,SystemServer①中和WifiService相关的只有两处函数调用。其中,WifiService的创建是第一条分析路线的起点。
正式介绍WifiService之前,本节先介绍两个基础知识,分别是HSM(Hierarchical State Machine,结构化状态机)和AsyncChannel。
① 对SystemServer感兴趣的读者不妨阅读《深入理解Android:卷Ⅱ》第3章。