2011-06-03 23 views
19

No está claro para mí cómo determina Android qué actividad comienza primero cuando se inicia una aplicación. La documentación Android afirma lo siguiente respecto a presentar el AndroidManifest.xml sobre Activities:Comprender qué actividad comienza primero en una aplicación de Android

"Sólo una actividad debe tener el 'lanzador' acción y 'principal' categoría ..."

Así que en el archivo AndroidManifest.xml , se debe esencialmente tener sólo una:

acción android: name = "android.intent.action.MAIN"

Android Categoría: name = "android.intent.category.DEFAULT"

Sin embargo, wh ile mirando al código de ejemplo del SDK de Android, la aplicación llamada "APIDemos" contiene un archivo de manifiesto con toneladas de

"android.intent.action.MAIN" y "android.intent.category.DEFAULT"

Estoy totalmente confundido. Esto parece ir en contra de lo que dice Google, que solo supone ser uno. ¿Android simplemente toma cualquiera que aparezca primero en el manifiesto e ignora todos los demás? Si no, ¿por qué hay múltiples PRINCIPALES y DEFAULT?

Respuesta

5

Estoy totalmente confundido. Esto parece ir en contra de lo que dice Google, que solo supone ser uno.

No es lo contrario. Estas actividades tienen categoría CATEGORY_DEFAULT, pero no CATEGORY_LAUNCHER.

+1

Tienes razón. Solo hay uno de estos en los APIDemos. Haré una cita la próxima semana para que me revisen la vista. Gracias. – Johann

3

action.MAIN y category.Launcher son los que se utilizan para especificar qué actividad se inicia cuando el usuario presiona el icono de su aplicación o lo selecciona de la lista de aplicaciones en ejecución.

Puede usar otras combinaciones de acciones y categoría.DEFAULT para responder a diferentes eventos pero la combinación de acción.MAIN y category.Launcher solo debe definirse una vez.

9

Las actividades muy a menudo necesitarán ser compatibles con CATEGORY_DEFAULT para que puedan ser encontradas por Context.startActivity(). Entonces, CATEGORY_DEFAULT puede aparecer varias veces.

Android no captura el que aparece primero en el manifiesto pero comienza con la actividad que tiene CATEGORY_LAUNCHER.

CATEGORY_LAUNCHER: la actividad puede ser la actividad inicial de una tarea y se enumera en el iniciador de aplicaciones de nivel superior.

Para más información lea: http://developer.android.com/guide/topics/intents/intents-filters.html

+0

¿Qué significa el lanzador de aplicaciones de nivel superior? – Xegara

Cuestiones relacionadas