Red de conocimiento informático - Material del sitio web - Cómo iniciar una aplicación de Android que se ejecuta en la página de inicio

Cómo iniciar una aplicación de Android que se ejecuta en la página de inicio

El iniciador de aplicaciones Inicio de Android lo inicia ActivityManagerService. Al igual que PackageManagerService, ActivityManagerService también lo inicia el componente SystemServer al inicio. Después de ser iniciado por el componente SystemServer, lo primero que debe iniciar el componente SystemServer es ePackageManagerServic, que es responsable de instalar las aplicaciones del sistema. Puede consultar el artículo anterior Análisis del código fuente del proceso de instalación de aplicaciones de Android Después de instalar la aplicación del sistema. El siguiente paso es utilizar el componente SystemServer ActivityManagerService para iniciar el Iniciador de la aplicación Inicio. Cuando se inicia el Iniciador, las aplicaciones instaladas en el sistema se mostrarán en el escritorio en forma de iconos de acceso directo a través de PackageManagerServic. el usuario puede utilizar estas aplicaciones. Todo el proceso se muestra en la siguiente figura. El proceso se muestra en la siguiente figura:

Cada paso se analizará en detalle a continuación.

Paso 1. SystemServer.main

Esta función está definida en el archivo frameworks/base/services/java/com/android/server/SystemServer.java, que se puede encontrar en el artículo anterior.

Paso 2: SystemServer.init1

Esta función es un método JNI implementado en el archivo frameworks/base/services/jni/com_android_server _SystemServer.cpp. Puede consultar el Paso 2 en. El artículo anterior "Análisis del código fuente del proceso de instalación de aplicaciones de Android".

Paso 3: ?libsystem_server.system_init

La función system_init se implementa en la biblioteca libsystem_server y el código fuente se encuentra en frameworks/base/cmds/system_server/library/system_init Archivo .cpp Puede consultar el paso 3 del artículo anterior "Análisis del código fuente del proceso de instalación de aplicaciones de Android".

Paso 4: ?AndroidRuntime.callStatic

Esta función está definida en el archivo frameworks/base/core/jni/AndroidRuntime.cpp. Puede consultar el artículo anterior "Aplicación de Android". Paso 4 en Análisis del código fuente del proceso de instalación del programa. init2

Esta función está definida en el archivo frameworks/base/services/java/com/android/server/SystemServer.java. Puede consultar el artículo anterior "Análisis del código fuente del proceso de instalación de aplicaciones de Android". Paso 5.

Paso 6. ?ServerThread.run

Esta función está definida en el archivo frameworks/base/services/java/com/android/server/SystemServer.java. En el archivo SystemServer.java, puede consultar el paso 6 del artículo anterior "Análisis del código fuente del proceso de instalación de aplicaciones de Android".

Paso 7. ActivityManagerService.main

Esta función está definida en frameworks/base/services/java/com/android/server/java/com/android/server/. En el archivo am/ActivityManagerServcie.java:

[java]?view Plaincopy

public?final?class?

implements?Watchdog.Monitor,?BatteryStatsImpl ¿BatteryCallback?{?

......?

público?{

AThread?thr?=?new?AThread();?< / p>

thr.start();?

¿sincronizado?{

mientras(thr.mService ==? null)?{

intenta { ?

thr.wait();?

}?catch?{

thr.wait();

¿Catch?

}?

}?

}

ActivityManagerService?m?=?thr.mService;?

mSelf?=?m;?

ActivityThread?at?=?ActivityThread.systemMain();?

mSystemThread?=?at;?

Contexto ?context?=?at.getSystemContext();?

m.mContext?=?context;?

m.mFactoryTest?=?factoryTest;?

m.mMainStack?=?new?ActivityStack(m,?context,?true);?

m.mBatteryStatsService.publish(context);?

m.mUsageStatsService. publicar (contexto);?

¿sincronizado?{

thr.mReady?=?true;?

thr.notifyAll();?

}?

m.startRunning(nulo,?nulo,?nulo,?nulo);? >

......?

}?

Esta función primero crea una instancia de ActivityManagerService internamente a través del objeto de hilo AThread y luego guarda la instancia en su miembro. variable mService, y luego guarde la instancia de ActivityManagerService en la clase ActivityManagerService en la variable miembro estática mSelf, y luego inicialice otras variables miembro, y finalmente terminamos.

Paso 8: ?PackageManagerService.main

Esta función está definida en el archivo frameworks/base/services/java/com/android/server/PackageManagerService.java.

archivo, puede consultar el paso 7 en el artículo anterior "Análisis del código fuente del proceso de instalación de aplicaciones de Android". Después de ejecutar este paso, la información de todas las aplicaciones en el sistema se guardará en PackageManagerService En el iniciador de aplicaciones principal. extraerá la información de la aplicación del PackageManagerService y la mostrará en el escritorio como un icono de acceso directo cuando se inicie el iniciador principal de la aplicación, como veremos más adelante.