//在 SystemServer 启动的时候,启动WifiService调用关系如下:
public static void main(String[] args) {
new SystemServer().run();
}
private void run() {
……
startOtherServices();
……
}
startOtherServices(){
......
mSystemServiceManager.startService(WIFI_P2P_SERVICE_CLASS);
mSystemServiceManager.startService(WIFI_SERVICE_CLASS);
mSystemServiceManager.startService(
"com.android.server.wifi.WifiScanningService");
mSystemServiceManager.startService("com.android.server.wifi.RttService");
……
}
当用户按下 Wifi 按钮后, 在设置里调用 WifiEnabler 的 onSwitchChanged()方法, 在这个方法里又 调用 WifiManager 的 setWifiEnabled 接口函数,通过 AIDL,实际调用的是 WifiService (即WifiServiceImpl)的setWifiEnabled 函数:
//setWifiEnabled 函数:
// WifiServiceImpl.java
public synchronized boolean setWifiEnabled(boolean enable) {
……
mWifiController.obtainMessage(CMD_WIFI_TOGGLED, mWifiIpoOff ? 1 :