5.2 WifiService的创建及初始化

WifiService在SystemServer进程中被创建,代码如下所示。

[—>SystemServer.java::ServerThread:run]

  1. public void run()
  2. ......
  3. try {
  4. wifi = new WifiService(context);// 创建一个WifiService对象
  5. ServiceManager.addService(Context.WIFI_SERVICE, wifi);
  6. }......
  7. try {
  8. connectivity = new ConnectivityService(
  9. context, networkManagement, networkStats, networkPolicy);
  10. ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity);
  11. ......
  12. /*
  13. 检查是否需要启动Wi-Fi。如果关机前Wi-Fi是打开的,则重启后Wi-Fi功能将在此函数中打开
  14. 该函数比较简单,其中有一处涉及WifiWatchdogStateMachine的代码。留待5.4节介绍。
  15. */
  16. wifi.checkAndStartWifi();
  17. wifiP2p.connectivityServiceReady();
  18. } ......
  19. ......

由上述代码可知,SystemServer中和WifiService相关的只有两处函数调用。其中,WifiService的创建是第一条分析路线的起点。

正式介绍WifiService之前,本节先介绍两个基础知识,分别是HSM(Hierarchical State Machine,结构化状态机)和AsyncChannel。

 对SystemServer感兴趣的读者不妨阅读《深入理解Android:卷Ⅱ》第3章。