多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
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章。