//在这里启动ZygoteInit
//frameworks/base/cmds/app_process/app_main.cpp
runtime.start("com.android.internal.os.ZygoteInit", args, zygote);
//ZygoteInit里面启动SystemServer
//frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
private static Runnable forkSystemServer(String abiList, String socketName,ZygoteServer zygoteServer) {
/*略*/
//把"com.android.server.SystemServer"添加在args中然后new
ZygoteCommandBuffer commandBuffer = new ZygoteCommandBuffer(args);
/*略*/
}
//在SystemServer--》main()---》run()
/frameworks/base/services/java/com/android/server/SystemServer.java
/**
* The main entry point from zygote.
*/
public static void main(String[] args) {
new SystemServer().run();
}
private void run() {
/*略*/
startOtherServices(t);
/*略*/
}
private void startOtherServices(@NonNull TimingsTraceAndSlog t) {
if (context.getPackageManager().hasSystemFeature(
packageManager.FEATURE_WIFI)) {
/*略*/
// Wifi Service must be started first for wifi-related services.
t.traceBegin("StartWifi");
mSystemServiceManager.startServiceFromJar(
WIFI_SERVICE_CLASS, WIFI_APEX_SERVICE_JAR_PATH);
t.traceEnd();
t.traceBegin("StartWifiScanning");
mSystemServiceManager.startServiceFromJar(
WIFI_SCANNING_SERVICE_CLASS, WIFI_APEX_SERVICE_JAR_PATH);
t.traceEnd();
}
/*略*/
}
下面便是new 的WifiService,可以看到主要做了new WifiContext、WifiInjector、WifiServiceImpl三个类。
WifiContext:获取上下文
WifiInjector:WiFi初始化环境配置
WifiServiceImpl:WiFiService
/packages/modules/Wifi/service/java/com/android/server/wifi/WifiService.java
public WifiService(Context contextBase) {
super(contextBase);
mWifiContext = new WifiContext(contextBase);
WifiInjector injector = new WifiInjector(mWifiContext);
mImpl = new WifiServiceImpl(mWifiContext, injector);
}
到这里就结束了,后面讲解WifiContext、WifiInjector、WifiServiceImpl主要做了什么
可以点击下面链接
https://blog.csdn.net/NiHuiShenMo/article/details/137346924?spm=1001.2014.3001.5502