punto de entrada de la aplicación android

Cuando desarrollamos una aplicación de Android, siempre empezamos con el método onCreate() de la actividad principal. Es obvio que hay algunas inicializaciones que deben hacerse antes de llamar onCreate() . Mi pregunta es: ¿cuál es el punto de entrada (o el método main ) de una aplicación de Android? ¿Qué invoca la VM Dalvik desde el principio (es decir, cuando termina la inicialización propia y está a punto de transferir el control a la aplicación)? ¿Dónde puedo encontrar el código de este main ?

El primer punto de "entrada" es la clase de aplicación como señaló Kingston.

Sin embargo, lo más fácil para obtener el primer punto de partida es comprobar la pila al depurar onCreate.

Usted puede comprobar Instrumentación, este sonido algo como lo que quiere.

http://developer.android.com/reference/android/app/Instrumentation.html

 MainActivity.onCreate(Bundle) line: 12 Instrumentation.callActivityOnCreate(Activity, Bundle) line: 1047 ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2627 ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679 ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125 ActivityThread$H.handleMessage(Message) line: 2033 ActivityThread$H(Handler).dispatchMessage(Message) line: 99 Looper.loop() line: 123 ActivityThread.main(String[]) line: 4627 Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invoke(Object, Object...) line: 521 ZygoteInit$MethodAndArgsCaller.run() line: 868 ZygoteInit.main(String[]) line: 626 NativeStart.main(String[]) line: not available [native method] 

Debe extender la clase Application y anular el método onCreate.

Para referencia: Clase de aplicación

No lo sé yo mismo, pero suena una pregunta interesante. Este es el código que activa una nueva Activity y siguiendo el código, terminará en código JNI

 public void startActivityForResult(Intent intent, int requestCode) { if (mParent == null) { Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity( this, mMainThread.getApplicationThread(), mToken, this, intent, requestCode); if (ar != null) { mMainThread.sendActivityResult( mToken, mEmbeddedID, requestCode, ar.getResultCode(), ar.getResultData()); } if (requestCode >= 0) { // If this start is requesting a result, we can avoid making // the activity visible until the result is received. Setting // this code during onCreate(Bundle savedInstanceState) or onResume() will keep the // activity hidden during this time, to avoid flickering. // This can only be done when a result is requested because // that guarantees we will get information back when the // activity is finished, no matter what happens to it. mStartedActivity = true; } } else { mParent.startActivityFromChild(this, intent, requestCode); } } 

El código fuente de Android está disponible, pero es un poco complicado obtenerlo porque está mal documentado. Tendrás que instalar repo y luego descargar el proyecto de framework/base

En los programas Java principales necesitamos un método main (), porque mientras ejecutamos el código de bytes, JVM (Java Virtual Machine) buscará el método main () en la clase y comenzará a ejecutar allí.

En Android, la máquina virtual de (DVM) Dalvik está diseñada para encontrar una clase que es una subclase de Actividad y que se establece como un LANZAMIENTO para iniciar la ejecución de la aplicación desde su método onCreate (), por lo que no es necesario un main ().

  • Detectar la compatibilidad con la entrada de archivos del navegador
  • Diseño de la interfaz de usuario de las aplicaciones de Android para que se vea el mismo en todos los modelos de teléfono?
  • Aplicación para móviles: orientada a iPhone, WP7, Android y Blackberry
  • WifiManager.is5GHzBandSupported () mentir?
  • Forzar una actualización en una aplicación móvil híbrida
  • La aplicación de Android no aparece en la lista de aplicaciones recientes
  • FB.getLoginStatus nunca activa la devolución de llamada en navegadores móviles
  • Escala incorrecta en WebView
  • ¿Cuáles son las ventajas del lenguaje de programación Kotlin?
  • Acelerar la búsqueda de video HTML5?
  • ¿Cómo aumentar el tamaño de la casilla de verificación en las páginas web basadas en el navegador móvil o en la tableta?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.