5.2 WifiService的创建及初始化
最后更新于:2022-04-02 06:03:38
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 StateMachine,结构化状态机)和AsyncChannel。
[^①]:对SystemServer感兴趣的读者不妨阅读《深入理解Android:卷Ⅱ》第3章。
';