<activity>

sintaxis:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    . . .
</activity>
contenido en:
<application>
PUEDE CONTENER:
<intent-filter>
<meta-data>
<layout>
descripción:
Declara una actividad (una subclase Activity) que implementa parte de la interfaz de usuario visual de la aplicación. Todas las actividades deben estar representadas por elementos <activity> en el archivo de manifiesto. El sistema no verá las que no estén declaradas en el archivo, las cuales nunca se ejecutarán.
atributos:
android:allowEmbedded
Indica que la actividad se puede iniciar como un campo secundario incorporado de otra actividad. Particularmente, cuando el campo secundario reside en un contenedor, como un Display perteneciente a otra actividad. Por ejemplo, las actividades empleadas en notificaciones personalizadas de Wear deben declararlo para que Wear pueda mostrar la actividad en el flujo de contexto, que reside en otro proceso.

El valor predeterminado de este atributo es false.

android:allowTaskReparenting
Define si la actividad puede pasar de la tarea que la inició a la tarea con la que tiene afinidad cuando dicha tarea se traiga a primer plano la próxima vez ("true" si es posible y "false" si debe permanecer con la tarea que la inició).

Si no se establece este atributo, se usará el valor del atributo allowTaskReparenting correspondiente del elemento <application> en la actividad. El valor predeterminado es "false".

Por lo general, cuando se inicia una actividad, se asocia con la tarea de la actividad que la inició y permanece allí durante toda su vida útil. Puedes usar este atributo para hacer que la actividad se vincule con la tarea con la que tenga afinidad cuando su tarea actual ya no aparezca. Normalmente, se usa para que las actividades de una aplicación se trasladen a la tarea principal asociada con dicha aplicación.

Por ejemplo, si un mensaje de correo electrónico contiene un vínculo a una página web, se iniciará una actividad capaz de mostrar la página cuando se haga clic en el vínculo. La aplicación del navegador define la actividad, pero se lanza como parte de la tarea del correo electrónico. Si se cambia su campo primario a la tarea del navegador, se mostrará la próxima vez que el navegador se muestre en primer plano y estará ausente cuando la tarea del correo electrónico se vuelva a mostrar.

El atributo taskAffinity define la afinidad de una actividad. La afinidad de la actividad raíz define la afinidad de la tarea. Por lo tanto, una actividad raíz está, por definición, siempre en una tarea con la misma afinidad. Dado que las actividades con modo de lanzamiento "singleTask" o "singleInstance" solo pueden estar en la raíz de una tarea, el cambio del campo primario a otra tarea se limita a los modos "standard" y "singleTop". Consulta también el atributo launchMode.

android:alwaysRetainTaskState
Define si el sistema siempre conservará el estado de la tarea donde se encuentra la actividad: "true" si es así y "false" si el sistema puede restablecer el estado inicial de la tarea en situaciones particulares. El valor predeterminado es "false". Este atributo sirve solamente para la actividad raíz de la tarea; se ignorar en el resto de las actividades.

Normalmente, el sistema limpia una tarea (quita todas las actividades de la pila encima de la actividad raíz) en situaciones particulares cuando el usuario vuelve a seleccionar la tarea desde la pantalla de inicio. Por lo general, esto ocurre cuando el usuario no ha visitado la tarea durante un tiempo específico, por ejemplo, 30 minutos.

Sin embargo, cuando este atributo sea "true", los usuarios siempre regresarán a la tarea en su último estado, sin importar cómo hayan llegado a ella. Por ejemplo, es útil en una aplicación, como un navegador web, con muchos estados (p. ej., varias pestañas abiertas) que los usuarios no quieren perder.

android:autoRemoveFromRecents
Define si las tareas ejecutadas por actividades con este atributo permanecen en la pantalla de información general hasta que se complete la última actividad de la tarea. Si es "true", la tarea se quita automáticamente de la pantalla de información general. Anula el uso de FLAG_ACTIVITY_RETAIN_IN_RECENTS por parte del emisor. Debe ser un valor booleano: "true" o "false".
android:banner
Un recurso de elemento de diseño que proporciona un banner gráfico extendido para el componente asociado. Se usa con la etiqueta <activity> para proporcionar un banner predeterminado a una actividad específica o con la etiqueta <application> para proporcionar un banner a todas las actividades de la aplicación.

El sistema usa el banner para representar una app en la pantalla de inicio de Android TV. Dado que el banner solo se muestra en la pantalla de inicio, solamente deben especificarlo las aplicaciones con una actividad que controle la intent CATEGORY_LEANBACK_LAUNCHER.

Este atributo se debe establecer como una referencia a un recurso de elemento de diseño que contenga la imagen (por ejemplo, "@drawable/banner"). No hay ningún banner predeterminado.

Para obtener más información, consulta Proporcionar un banner en la pantalla de inicio del documento "Primeros pasos con apps para TV".

android:clearTaskOnLaunch
Define si todas las actividades se quitarán de la tarea, salvo la actividad raíz, cuando se vuelva a iniciar desde la pantalla de inicio ("true" si la tarea siempre se limpia hasta la actividad raíz y "false" si no es así). El valor predeterminado es "false". Este atributo sirve solamente para actividades que inician una tarea nueva (la actividad raíz); se ignora en el resto de las actividades de la tarea.

Cuando el valor es "true", cada vez que los usuarios vuelven a iniciar la tarea, regresan a la actividad raíz independientemente de su última actividad en la tarea y sin importar si usaron el botón Atrás o Inicio para salir. Cuando el valor es "false", es posible borrar las actividades de la tarea en algunas situaciones (consulta el atributo alwaysRetainTaskState), pero no siempre.

Por ejemplo, supongamos que alguien inicia la actividad P desde la pantalla de inicio y, a continuación, pasa a la actividad Q. Después, el usuario presiona Inicio y regresa a la actividad P. Normalmente, el usuario verá la actividad Q, ya que es lo último que estaba haciendo en la tarea de P. Sin embargo, si P estableció este indicador en "true", todas las actividades que le siguen (Q, en este caso) se quitaron cuando el usuario presionó Inicio y la tarea pasó a segundo plano. Por lo tanto, el usuario solamente verá P cuando regrese a la tarea.

Si este atributo y allowTaskReparenting son "true", todas las actividades cuyos campos primarios pueden cambiarse a otra tarea se trasladan a la tarea con afinidad. Luego, se quita el resto de las actividades, como se describió anteriormente.

android:colorMode

Solicita que la actividad se muestre usando el modo de gamut amplio de colores en dispositivos compatibles. En este modo, una ventana puede representarse fuera del gamut SRGB para mostrar colores más vívidos. Si el dispositivo no es compatible con la representación en este modo, el atributo queda sin efecto. Para obtener más información sobre la representación en el modo amplio de colores, consulta Mejorar los gráficos con contenido amplio de colores.

android:configChanges
Enumera los cambios de configuración que controlará la actividad. Cuando se produce un cambio de configuración en tiempo de ejecución, la actividad se cierra y se reinicia de forma predeterminada. Sin embargo, si se declara una configuración con este atributo, la actividad no se reiniciará. En cambio, la actividad permanece en ejecución y se llama al método onConfigurationChanged().

Nota: Se recomienda evitar este atributo y usarlo únicamente cuando sea el último recurso. Consulta Manejo de cambios en tiempo de ejecución para obtener más información sobre cómo manejar adecuadamente los reinicios provocados por cambios en la configuración.

Todas las strings siguientes son valores válidos para este atributo. Los valores múltiples se separan con "|" (por ejemplo, "locale|navigation|orientation").

Valor Descripción
"density" Cambió la densidad de la pantalla; es posible que el usuario haya especificado una escala diferente o que se esté usando otra pantalla en este momento.

Se agregó en el nivel de API 24.

"fontScale" Cambió el factor de escala de las fuentes; el usuario seleccionó un nuevo tamaño de fuente global.
"keyboard" Cambió el tipo de teclado; por ejemplo, el usuario conectó un teclado externo.
"keyboardHidden" Cambió la accesibilidad del teclado; por ejemplo, el usuario expuso el teclado de hardware.
"layoutDirection" Cambió la dirección del diseño; por ejemplo, cuando se cambia de izquierda a derecha (LTR) o derecha a izquierda (RTL).

Se agregó en el nivel de API 17.

"locale" Cambió la configuración regional; el usuario seleccionó un nuevo idioma de texto.
"mcc" Cambió el código móvil de país (MCC) de IMSI; se detectó una SIM y se actualizó el MCC.
"mnc" Cambió el código de red móvil (MNC) de IMSI; se detectó una SIM y se actualizó el MCC.
"navigation" Cambió el tipo de navegación (bola de seguimiento o control de dirección). Normalmente, nunca debería pasar.
"orientation" Cambió la orientación de la pantalla; el usuario giró el dispositivo.

Nota: Si tu aplicación está orientada a Android 3.2 (nivel de API 13) o a versiones posteriores, también debes declarar la configuración de "screenSize" porque varía cuando un dispositivo pasa de la orientación vertical a la horizontal.

"screenLayout" Cambió el diseño de la pantalla; es posible que se esté usando otra pantalla en este momento.
"screenSize" Cambió el tamaño de la pantalla actualmente disponible.

Representa un cambio en el tamaño actualmente disponible en función de la relación de aspecto actual. Por lo tanto, variará cuando el usuario alterne la orientación vertical y la horizontal.

Se agregó en el nivel de API 13.

"smallestScreenSize" Cambió el tamaño físico de la pantalla.

Representa un cambio de tamaño independientemente de la orientación. Por lo tanto, solo cambiará cuando cambie el tamaño físico de la pantalla, como cuando se pasa a una pantalla externa. Los cambios en esta configuración corresponden a un cambio en la configuración smallestWidth.

Se agregó en el nivel de API 13.

"touchscreen" Cambió la pantalla táctil. Normalmente, nunca debería pasar.
"uiMode" Cambió el modo de la interfaz de usuario; el usuario colocó el dispositivo en una computadora o un conector para autos, o cambió el modo nocturno. Para obtener más información sobre los diferentes modos de la IU, consulta UiModeManager.

Se agregó en el nivel de API 8.

Todos estos cambios de configuración pueden influir en los valores de los recursos que detecta la aplicación. Por lo tanto, cuando se llame a onConfigurationChanged(), por lo general, será necesario volver a obtener todos los recursos (incluso los diseños de vista, los elementos de diseño, etc.) para gestionar el cambio correctamente.

Nota: Para manejar todos los cambios de configuración relativos al modo multiventana, usa "screenLayout" y "smallestScreenSize". El modo multiventana es compatible con Android 7.0 (nivel de API 24) o versiones posteriores.

android:directBootAware

Si la actividad reconoce el arranque directo, es decir, si puede ejecutarse antes de que el usuario desbloquee el dispositivo.

Nota: Durante el arranque directo, una actividad de tu aplicación solo puede acceder a los datos almacenados en el área de almacenamiento protegida por el dispositivo.

El valor predeterminado es "false".

android:documentLaunchMode
Especifica la manera en que se debería agregar una nueva instancia de una actividad a una tarea cada vez que se inicia. Este atributo permite que el usuario pueda contar con varios documentos de la misma aplicación en la pantalla de información general.

Este atributo tiene cuatro valores que producen los siguientes efectos cuando el usuario abre un documento con la aplicación:

Valor Descripción
"intoExisting" El sistema busca una tarea que tenga un URI de datos y un ComponentName de la intent básica que coincidan con los de la intent de lanzamiento. Si encuentra la tarea, el sistema la borra y se reinicia haciendo que la actividad raíz reciba una llamada a onNewIntent(android.content.Intent). Si el sistema no encuentra la tarea, crea una nueva.
"always" La actividad crea una tarea nueva para el documento, incluso si el documento ya está abierto. Es lo mismo que establecer los marcadores FLAG_ACTIVITY_NEW_DOCUMENT y FLAG_ACTIVITY_MULTIPLE_TASK.
"none" La actividad no crea una tarea nueva para la actividad. Es el valor predeterminado, que crea una tarea nueva solo cuando se establece FLAG_ACTIVITY_NEW_TASK. En la pantalla de información general, la actividad recibe el mismo tratamiento que el predeterminado: se muestra una sola tarea para la aplicación, la cual se reanuda desde la última actividad que el usuario invocó.
"never" Esta actividad no se envía a un documento nuevo, incluso si la intent contiene FLAG_ACTIVITY_NEW_DOCUMENT. La configuración de este valor reemplaza el comportamiento de los marcadores FLAG_ACTIVITY_NEW_DOCUMENT y FLAG_ACTIVITY_MULTIPLE_TASK si cualquiera de estos se establece en la actividad, y en la pantalla de información general se muestra una sola tarea para la aplicación, que se reanuda desde la última actividad que el usuario invocó.

Nota: Para valores distintos de "none" y "never", la actividad se debe definir con launchMode="standard". Si no se especifica este atributo, se usará documentLaunchMode="none".

android:enabled
Define si el sistema puede crear una instancia de la actividad ("true" si es posible y "false" si no lo es). El valor predeterminado es "true".

El elemento <application> tiene su propio atributo enabled, que sirve para todos los componentes de la aplicación, incluidas las actividades. Los atributos <application> y <activity> deben ser "true" (el valor predeterminado de ambos) para que el sistema pueda crear una instancia de la actividad. Si alguno de ellos es "false", no se podrá crear la instancia.

android:excludeFromRecents
Define si la tarea iniciada por esta actividad debería excluirse de la lista de aplicaciones recientemente usadas, la pantalla de información general. Es decir, cuando la actividad es la actividad raíz de una tarea nueva, este atributo determina si la tarea no debe aparecer en la lista de aplicaciones recientes. Establece el valor en "true" si la tarea debe excluirse de la lista; establece el valor en "false" si la tarea debería incluirse. El valor predeterminado es "false".

android:exported
Este elemento define si los componentes de otras aplicaciones pueden lanzar la actividad ("true" si es posible y "false" si no lo es). Si el valor es "false", la actividad solo puede lanzarse mediante componentes de la misma aplicación o las mismas aplicaciones cuyo ID de usuario coincida.

Si usas filtros de intents, no debes establecer en "false" este elemento. De lo contrario, si una aplicación intenta llamar a la actividad, el sistema devuelve una ActivityNotFoundException. No debes establecer filtros de intents para la actividad a fin de evitar que otras aplicaciones la llamen.

Si no tienes filtros de intents, el valor predeterminado de este elemento es "false". Si estableces el valor "true" para el elemento, cualquier aplicación que conozca el nombre exacto de la clase podrá acceder a dicho elemento, pero no resolverás el problema que surge cuando el sistema intenta encontrar una intent implícita que coincida.

Este atributo no es la única manera de limitar la exposición de la aplicación a otras aplicaciones. También puedes usar un permiso para limitar las entidades externas que pueden invocar a la actividad (consulta el atributo permission).

android:finishOnTaskLaunch
Define si se debe cerrar (finalizar) una instancia existente de la actividad cuando el usuario vuelve a iniciar la tarea (selecciona la tarea en la pantalla de inicio). Es "true" si hay que cerrarla y "false" si no hay que hacerlo. El valor predeterminado es "false".

Si este atributo y el atributo allowTaskReparenting son "true", este atributo tiene prioridad sobre el otro. Se ignora la afinidad de la actividad. El campo primario de la actividad no se cambia a otra tarea; esta se destruye.

android:hardwareAccelerated
Define si se debe habilitar la representación acelerada por hardware para esta actividad ("true" si se debe habilitar y "false" si no se debe habilitar). El valor predeterminado es "false".

A partir de Android 3.0, las aplicaciones disponen de un representador OpenGL acelerado por hardware para mejorar el rendimiento de varias operaciones comunes de gráficos 2D. Cuando se habilita el representador acelerado por hardware, se acelera la mayoría de las operaciones en Canvas, Paint, Xfermode, ColorFilter, Shader y Cámara. Como resultado, se obtienen animaciones y desplazamientos más dinámicos, y una capacidad de respuesta mejorada a nivel general, incluso para aplicaciones que no hacen uso explícito de las bibliotecas OpenGL del marco de trabajo. Debido al aumento de recursos requerido para habilitar la aceleración de hardware, tu aplicación consumirá más memoria RAM.

Ten en cuenta que no se pueden acelerar todas las operaciones 2D de OpenGL. Si habilitas el representador acelerado por hardware, prueba tu aplicación para asegurarte de que pueda usar el representador sin generar errores.

android:icon
Un ícono que representa una actividad. El ícono se muestra a los usuarios cuando se requiere una representación de la actividad en la pantalla. Por ejemplo, los íconos de actividades que inician tareas se muestran en la ventana del lanzador. A menudo, el ícono incluye una etiqueta (consulta el atributo android:label).

Este atributo se debe establecer como una referencia a un recurso de elemento de diseño que contenga la definición de la imagen. Si no se establece, se usa en su lugar el ícono especificado para toda la aplicación (consulta el atributo icon del elemento <application>).

El ícono de la actividad (el que se establece aquí o mediante el elemento <application>) también es el ícono predeterminado de todos los filtros de intents de la actividad (consulta el atributo icon del elemento <intent-filter>).

android:immersive
Establece la configuración de modo envolvente para la actividad actual. Si el atributo android:immersive se establece en true en la entrada del manifiesto de la aplicación de esta actividad, el miembro ActivityInfo.flags siempre tiene establecido su conjunto de bits FLAG_IMMERSIVE, incluso si se cambia el modo envolvente en el tiempo de ejecución mediante el método setImmersive().
android:label
Etiqueta de la actividad que los usuarios pueden leer. Se muestra en pantalla cuando se debe representar la actividad al usuario. Por lo general, se muestra junto al ícono de la actividad.

Si este atributo no se establece, la etiqueta definida para toda la aplicación se usa en su lugar (consulta el atributo label del elemento <application>).

La etiqueta de la actividad (la que se establece aquí o mediante el elemento <application>) también es la etiqueta predeterminada de todos los filtros de intents de la actividad (consulta el atributo label del elemento <intent-filter>).

La etiqueta se debe establecer como una referencia a un recurso de una string para que se pueda localizar como otras strings en la interfaz de usuario. Sin embargo, también se puede establecer como una string sin procesar para que sea más fácil durante el desarrollo de la aplicación.

android:launchMode
Instrucción para el inicio de una actividad. Existen cuatro modos que funcionan junto a los marcadores de actividad (constantes FLAG_ACTIVITY_*) en objetos Intent para determinar lo que debe ocurrir cuando se llama a la actividad para controlar una intent. Estos son los cuatro modos:

"standard"
"singleTop"
"singleTask"
"singleInstance"

El modo predeterminado es "standard".

Como se muestra en la siguiente tabla, los modos entran en dos grupos principales: por un lado, las actividades "standard" y "singleTop"; por el otro, las actividades "singleTask" y "singleInstance". Se pueden crear varias instancias de las actividades con modo de lanzamiento "standard" o "singleTop". Las instancias pueden pertenecer a cualquier tarea y pueden ubicarse en cualquier lugar de la pila de actividades. Por lo general, se inician en la tarea que llamó a startActivity(), a menos que el objeto intent contenga una instrucción FLAG_ACTIVITY_NEW_TASK. Si es así, se elegirá una tarea diferente (consulta el atributo taskAffinity).

En cambio, las actividades "singleTask" y "singleInstance" solo pueden iniciar una tarea. Siempre se encuentran en la raíz de la pila de actividades. Además, el dispositivo puede manejar solamente una instancia de la actividad por vez (solo una de dicha tarea).

Los modos "standard" y "singleTop" difieren uno del otro en un solo aspecto: Cada vez que hay una intent nueva para una actividad "standard", se crea una instancia nueva de la clase para responder a esa intent. Cada instancia administra una intent individual. De manera similar, una instancia nueva de una actividad "singleTop" también puede crearse para que administre una intent nueva. Sin embargo, si la tarea de destino ya cuenta con una instancia de la actividad en la parte superior de la pila, la instancia recibirá la nueva intent (en una llamada a onNewIntent()); no se creará una nueva instancia. En otras circunstancias (por ejemplo, si una instancia existente de la actividad "singleTop" se encuentra en la tarea de destino, pero no en la parte superior de la pila, o si se encuentra en la parte superior de la pila, pero no en la tarea de destino), se creará una nueva instancia, la cual se incorporará a la pila.

De forma similar, si navegas hacia arriba a una actividad en la pila actual, el modo de lanzamiento de la actividad principal determinará el comportamiento. Si el modo de lanzamiento de la actividad principal es singleTop (o la intent up contiene FLAG_ACTIVITY_CLEAR_TOP), el componente principal se traslada a la parte superior de la pila y su estado se conserva. El método onNewIntent() de la actividad principal recibe la intent de navegación. Si el modo de lanzamiento de la actividad principal es standard (y la intent up no contiene FLAG_ACTIVITY_CLEAR_TOP), se quitan de la pila la actividad actual y su componente principal, y se crea una nueva instancia de la actividad principal para recibir la intent de navegación.

Los modos "singleTask" y "singleInstance" también difieren uno del otro en un solo aspecto: Una actividad "singleTask" permite que otras formen parte de su tarea. Siempre está en la raíz de su tarea, pero otras actividades (que deben ser "standard" y "singleTop") se pueden iniciar en dicha tarea. Una actividad "singleInstance", en cambio, no permite que otras actividades formen parte de su tarea. Es la única actividad de la tarea. Si inicia otra actividad, esta se asignará a otra tarea; como si FLAG_ACTIVITY_NEW_TASK estuviera en la intent.

Casos de uso Modo de lanzamiento ¿Varias instancias? Comentarios
Lanzamientos convencionales para la mayoría de las actividades "standard" Predeterminado. El sistema siempre crea una nueva instancia de la actividad en la tarea destino y direcciona la intent hacia ella.
"singleTop" Condicionalmente Si una instancia de la actividad ya existe al comienzo de la tarea de destino, el sistema direcciona la intent hacia dicha instancia mediante un llamado a su método onNewIntent(), en lugar de crear una nueva instancia de la actividad.
Lanzamientos especiales
(no se recomienda para usos generales)
"singleTask" No El sistema crea la actividad en la raíz de una tarea nueva y direcciona la intent hacia ella. Sin embargo, si ya existe una instancia de la actividad, el sistema direcciona la intent hacia la instancia existente mediante una llamada a su método onNewIntent(), en lugar de crear una nueva.
"singleInstance" No Es igual que "singleTask"", con la excepción de que el sistema no lanza otras actividades en la tarea que contiene la instancia. La actividad siempre es el único miembro de su tarea.

Como se mostró en la tabla anterior, standard es el modo predeterminado y es adecuado para la mayoría de los tipos de actividades. SingleTop también es un modo de lanzamiento convencional y útil para muchos tipos de actividades. Los otros modos (singleTask y singleInstance) no son apropiados para la mayoría de las aplicaciones, ya que generan un modelo de interacción probablemente poco familiar para los usuarios y muy diferente de otras aplicaciones.

Independientemente del modo de lanzamiento que elijas, asegúrate de probar la usabilidad de la actividad durante el lanzamiento y cuando regreses a ella desde otras actividades y tareas después de presionar el botón Atrás.

Para obtener más información sobre los modos de lanzamiento y su interacción con indicadores de intents, consulta el documento sobre tareas y pila de retroceso.

android:lockTaskMode
Determina cómo presenta el sistema esta actividad cuando el dispositivo se ejecuta en modo de bloqueo de tarea.

Android puede ejecutar tareas con un método de tipo kiosco envolvente que se denomina modo de bloqueo de tarea. Cuando el sistema se ejecuta en este modo, los usuarios del dispositivo no suelen ver las notificaciones, no pueden acceder a aplicaciones que no estén incluidas en la lista blanca ni pueden regresar a la pantalla de inicio (salvo que la aplicación de inicio esté autorizada). Solo las aplicaciones incluidas en la lista blanca por un controlador de políticas de dispositivos (DPC) pueden ejecutarse si el sistema está en el modo de bloqueo de tarea. Sin embargo, las aplicaciones del sistema y con privilegios pueden ejecutarse en este modo sin que haga falta incluirlas en la lista blanca.

El valor puede ser una de las siguientes strings R.attr.lockTaskMode:

Valor Descripción
"normal" Valor predeterminado. Este es el valor predeterminado. Las tareas no se lanzan en el modo de bloqueo de tarea, pero es posible usar startLockTask() para colocarlas en dicho modo.
"never"

Las tareas no se lanzan en el modo de bloqueo de tarea y el dispositivo del usuario no puede fijar dichas tareas desde la pantalla de información general.

Nota: Este modo está disponible solamente para aplicaciones de sistema y con privilegios. Las aplicaciones sin privilegios que tienen este valor se consideran en modo normal.

"if_whitelisted" Si el DPC autoriza este paquete usando DevicePolicyManager.setLockTaskPackages(), este modo es idéntico a always, con la excepción de que la actividad debe llamar a stopLockTask() antes de poder terminar si es la última tarea bloqueada. Si el DPC no autoriza este paquete, este modo es idéntico a normal.
"always"

Las tareas que se originan en esta actividad siempre se lanzan en el modo de bloqueo de tareas. Si el sistema ya se encuentra en dicho modo cuando se lanza esta tarea, la tarea nueva se lanzará en la parte superior de la actual. Las tareas que se inician en este modo pueden llamar a finish() para salir del modo de bloqueo de tareas.

Nota: Este modo está disponible solamente para aplicaciones de sistema y con privilegios. Las aplicaciones sin privilegios que tienen este valor se consideran en modo normal.

Este atributo se agregó en el nivel de API 23.

android:maxRecents
Cantidad máxima de tareas que tienen la raíz en esta actividad en la pantalla de información general. Cuando se alcanza esta cantidad de entradas, el sistema quita la instancia que se usó con mayor anterioridad de la pantalla de información general. Los valores válidos van del 1 al 50 (25 en dispositivos con poca memoria); cero no es un valor válido. Debe ser un valor entero, como 50. El valor predeterminado es 16.
android:maxAspectRatio
La relación de aspecto máxima que admite la actividad. Si la aplicación se ejecuta en un dispositivo con una relación de aspecto más ancha, el sistema aplica automáticamente el formato letterbox a la aplicación y deja partes de la pantalla sin usar para que la aplicación pueda ejecutarse con su relación de aspecto máxima especificada. La relación de aspecto máxima se expresa como el formato decimal del resultado de dividir la dimensión más larga del dispositivo por su dimensión más corta. Por ejemplo, si la relación de aspecto máxima es 7:3, el valor de este atributo debe ser 2,33. En dispositivos que no sean wearable, el valor de este atributo debe ser 1,33 o superior. En dispositivos wearable, debe ser 1,0 o superior. De lo contrario, el sistema ignorará el valor establecido.

Nota: Este atributo se ignora si la actividad tiene establecido el valor resizeableActivity en "true", dado que esto significa que la actividad es compatible con cualquier tamaño.

Para obtener más información sobre este atributo, consulta Compatibilidad con diferentes pantallas.

android:multiprocess
Define si se puede lanzar una instancia de la actividad en el proceso del componente que la inició ("true" si es posible y "false" si no lo es). El valor predeterminado es "false".

Por lo general, una nueva instancia de una actividad se lanza en el proceso de la aplicación que la definió; por lo tanto, todas las instancias de la actividad se ejecutan en el mismo proceso. Sin embargo, si este indicador se establece en "true", las instancias de la actividad se pueden ejecutar en varios procesos. En consecuencia, el sistema puede crear instancias en cualquier lugar en el que se usen (siempre y cuando los permisos lo permitan). Esto casi nunca es necesario ni deseable.

android:name
Nombre de la clase que implementa la actividad, una subclase de Activity. El valor del atributo debe ser un nombre de clase completamente calificado (como "com.example.project.ExtracurricularActivity"). Sin embargo, como atajo, si el primer carácter del nombre es un punto (por ejemplo, ".ExtracurricularActivity"), se agregará al nombre del paquete especificado en el elemento <manifest>.

Cuando publiques tu aplicación, no cambies este nombre (salvo que hayas establecido android:exported="false").

No hay ningún valor predeterminado. Se debe especificar el nombre.

android:noHistory
Define si se debe quitar la actividad de la pila de actividades y si se debe finalizar (llamar al método finish()) cuando el usuario salga de la actividad y no se muestre en pantalla ("true" si se debe finalizar y "false" si no se debe finalizar). El valor predeterminado es "false".

Si el valor es "true", la actividad no dejará un seguimiento histórico. No permanecerá en la pila de actividades de la tarea y el usuario no podrá regresar a ella. En este caso, nunca se llamará a onActivityResult() si inicias otra actividad para un resultado de esta actividad.

Este atributo se agregó en el nivel de API 3.

android:parentActivityName
Nombre de clase del componente principal lógico de la actividad. El nombre debe coincidir con el nombre de clase otorgado al correspondiente atributo android:name del elemento <activity>.

El sistema lee este atributo para determinar la actividad que se debe iniciar cuando el usuario presiona el botón "Up" de la barra de acciones. El sistema también puede usar esta información para sintetizar una pila de retroceso de actividades con TaskStackBuilder.

Para ofrecer compatibilidad con los niveles de API 4 a 16, puedes declarar la actividad principal con un elemento <meta-data> que especifique un valor para "android.support.PARENT_ACTIVITY". Por ejemplo:

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

Para obtener más información sobre la declaración de la actividad principal y admitir la navegación hacia arriba, consulta el documento sobre Cómo proporcionar navegación hacia arriba.

Este atributo se agregó en el nivel de API 16.

android:persistableMode

Define cómo se preserva una instancia de una actividad dentro de una tarea que la contiene después de cada reinicio del dispositivo.

Si la actividad raíz de una tarea establece el valor de este atributo en persistRootOnly, solo se preserva la actividad raíz. De lo contrario, se examinan las actividades que se encuentran más arriba en la pila de actividades de la tarea y se preserva cualquiera de estas actividades que establezca el valor del atributo en persistAcrossReboots.

Si usas este atributo, debes establecer su valor usando alguna de estas opciones:

Valor Descripción
persistRootOnly Valor predeterminado. Cuando el sistema se reinicia, se preserva la tarea de la actividad, pero solo se usa la intent de lanzamiento de la actividad raíz.

Cuando la intent de lanzamiento de tu aplicación carga la actividad raíz de dicha aplicación, la actividad no recibe un objeto PersistableBundle. Por lo tanto, no uses onSaveInstanceState() para preservar el estado de la actividad raíz de tu aplicación tras el reinicio de un dispositivo.

Nota: El valor de este atributo afecta el comportamiento de tu aplicación solamente si se establece en la actividad raíz de tu aplicación.

persistAcrossReboots

Se preserva el estado de esta actividad junto con el estado de cada actividad en la parte superior de la pila de actividades que tenga su propio atributo persistableMode establecido en persistAcrossReboots. Si una actividad no tiene un atributo persistableMode establecido en persistAcrossReboots o si se lanza usando el marcador Intent.FLAG_ACTIVITY_NEW_DOCUMENT, no se preserva esa actividad ni ninguna otra de las que estén en la parte superior de la pila de actividades.

Cuando una intent carga una actividad cuyo atributo persistableMode se establece en persistAcrossReboots en tu aplicación, la actividad recibe un objeto PersistableBundle en su método onCreate(). Por lo tanto, puedes usar onSaveInstanceState() para preservar el estado de una actividad tras el reinicio de un dispositivo siempre y cuando su atributo persistableMode esté establecido en persistAcrossReboots.

Nota: El valor de este atributo afecta el comportamiento de tu aplicación incluso si se establece en una actividad que no sea la actividad raíz de tu aplicación.

persistNever

No se preserva el estado de la actividad.

Nota: El valor de este atributo afecta el comportamiento de tu aplicación solamente si se establece en la actividad raíz de tu aplicación.

Este atributo se agregó en el nivel de API 21.

android:permission
Nombre del permiso que los clientes deben tener para poder iniciar la actividad o para que la actividad responda a una intent. Si el emisor de startActivity() o startActivityForResult() no recibió el permiso especificado, su intent no se entregará a la actividad.

Si no se establece este atributo, se usará el permiso establecido por el atributo permission del elemento <application> en la actividad. Si no se establece ninguno de los atributos, la actividad no contará con protección de un permiso.

Para obtener más información sobre los permisos, consulta la sección sobre permisos en la introducción y el documento sobre seguridad y permisos.

android:process
Nombre del proceso en el cual la actividad debe ejecutarse. Por lo general, todos los componentes de una aplicación se ejecutan en un nombre de proceso predeterminado que crea dicha aplicación, y no hace falta que uses este atributo. Pero, si es necesario, puedes anular el nombre de proceso predeterminado con este atributo. De esta forma, podrás usar los componentes de tu aplicación en varios procesos.

Si el nombre asignado a este atributo comienza con dos puntos (":"), se crea un nuevo proceso privado de la aplicación cuando hace falta y la actividad se ejecuta en ese proceso. Si el nombre del proceso comienza con un carácter en minúscula, la actividad se ejecuta en un proceso global correspondiente a ese nombre, siempre y cuando tenga permiso para hacerlo. Esto permite que los componentes de diferentes aplicaciones compartan un proceso y disminuye el uso de recursos.

El atributo process del elemento <application> puede establecer otro nombre de proceso predeterminado para todos los componentes.

android:relinquishTaskIdentity
Define si la actividad cede sus identificadores de tarea a una actividad superior en la pila de tareas. Una tarea cuya actividad raíz haya establecido este atributo en "true" reemplaza la intent base por la de la próxima actividad de la tarea. Si la próxima actividad también estableció este atributo en "true", cederá la intent base a cualquier actividad que inicie en la misma tarea. Este proceso continuará en todas las actividades hasta que se encuentre una actividad con el atributo en "false". El valor predeterminado es "false".

Cuando este atributo es "true", la actividad también puede usar ActivityManager.TaskDescription para cambiar las etiquetas, los colores y los íconos en la pantalla de información general.

resizeableActivity

Especifica si la aplicación admite la visualización de ventanas múltiples. Puedes fijar este atributo en el elemento <activity> o el elemento <application>.

Si fijas este atributo como "true", el usuario podrá iniciar la actividad en los modos de pantalla dividida y de forma libre. Si fijas este atributo en "false", la actividad no admitirá el modo de ventanas múltiples. Si el valor es "false", y el usuario intenta iniciar la actividad en el modo multiventana, la actividad ocupará toda la pantalla.

Si tu aplicación está orientada al nivel de API 24 o a niveles superiores, pero no especificas un valor para este atributo, el valor predeterminado del atributo será "true".

Este atributo se agregó en el nivel de API 24.

android:screenOrientation
Define la orientación en la que se mostrará la actividad en el dispositivo. El sistema ignora este atributo si la actividad se ejecuta en el modo de ventanas múltiples.

El valor puede ser una de las siguientes strings:

"unspecified" El valor predeterminado. El sistema selecciona la orientación. La política que usa (y, en consecuencia, las elecciones que realiza en contextos específicos) puede variar de un dispositivo a otro.
"behind" La misma orientación de la actividad inmediatamente debajo de ella en la pila de actividades.
"landscape" Orientación horizontal (la pantalla es más ancha que alta).
"portrait" Orientación vertical (la pantalla es más alta que ancha).
"reverseLandscape" Orientación horizontal en la dirección opuesta al modo horizontal convencional. Se agregó en el nivel de API 9.
"reversePortrait" Orientación vertical en dirección opuesta al modo vertical convencional. Se agregó en el nivel de API 9.
"sensorLandscape" Orientación horizontal, pero puede ser modo horizontal convencional o inverso según el sensor del dispositivo. El sensor se usa incluso si el usuario bloquea la rotación definida por sensor. Se agregó en el nivel de API 9.
"sensorPortrait" Orientación vertical, pero puede ser modo vertical convencional o inverso según el sensor del dispositivo. El sensor se usa incluso si el usuario bloquea la rotación definida por sensor. Se agregó en el nivel de API 9.
"userLandscape" Orientación horizontal, pero puede ser modo horizontal convencional o inverso según el sensor del dispositivo y la preferencia del usuario. Se agregó en el nivel de API 18.
"userPortrait" Orientación vertical, pero puede ser modo vertical convencional o inverso según el sensor del dispositivo y la preferencia del usuario. Se agregó en el nivel de API 18.
"sensor" El sensor de orientación del dispositivo determina la orientación. La orientación de la pantalla depende de cómo el usuario sostiene el dispositivo. Cambia cuando el usuario gira el dispositivo. Sin embargo, algunos dispositivos no rotarán en las cuatro orientaciones posibles de forma predeterminada. Para permitir la rotación en las cuatro orientaciones, usa "fullSensor". El sensor se usa incluso si el usuario bloquea la rotación definida por sensor.
"fullSensor" El sensor de orientación del dispositivo determina cualquiera de las cuatro orientaciones posibles. Es similar a "sensor", con la excepción de que aquí se permite cualquiera de las cuatro posibles orientaciones de pantalla, independientemente del comportamiento normal del dispositivo (por ejemplo, algunos dispositivos no usan normalmente el modo vertical inverso ni el horizontal inverso, pero este valor los habilita). Se agregó en el nivel de API 9.
"nosensor" La orientación se determina sin hacer referencia a un sensor de orientación físico. Se ignora el sensor y, por lo tanto, la pantalla no rotará en función de cómo el usuario mueva el dispositivo.
"user" La orientación que prefiere el usuario actualmente.
"fullUser" Si el usuario bloquea la rotación definida por sensor, este valor funciona igual que user. De lo contrario, se comporta igual que fullSensor y admite cualquiera de las cuatro posibles orientaciones de pantalla. Se agregó en el nivel de API 18.
"locked" Bloquea la orientación en la rotación actual, sin importar la que sea. Se agregó en el nivel de API 18.

Nota: Cuando declaras uno de los valores horizontales o verticales, se considera un requisito obligatorio de la orientación de la actividad. En consecuencia, el valor que declares permitirá que distintos servicios, como Google Play, apliquen filtros a fin de que tu aplicación esté disponible únicamente para dispositivos que admitan la orientación de tus actividades. Por ejemplo, si declaras "landscape", "reverseLandscape" o "sensorLandscape", tu aplicación estará disponible únicamente para dispositivos que admitan orientación horizontal. Sin embargo, también debes declarar explícitamente que tu aplicación requiere orientación vertical u horizontal con el elemento <uses-feature>. Por ejemplo, <uses-feature android:name="android.hardware.screen.portrait"/>. Solo se trata de un comportamiento de filtrado que proporciona Google Play (también lo ofrecen otros servicios que lo admiten). La plataforma no controla si tu aplicación se puede instalar cuando un dispositivo solo admite ciertas orientaciones.

android:showForAllUsers

Si la actividad se muestra o no cuando el usuario actual del dispositivo es diferente del usuario que lanzó la actividad. Puedes establecer este atributo usando un valor literal ("true" o "false") o usando un recurso o tema que contenga un valor booleano.

Este atributo se agregó en el nivel de API 23.

android:stateNotNeeded
Define si la actividad se puede finalizar y reiniciar correctamente sin haber guardado el estado ("true" si se puede reiniciar sin referencia a su estado anterior y "false" si es necesario conocer su estado anterior). El valor predeterminado es "false".

Por lo general, antes de cerrar temporalmente una actividad para ahorrar recursos, se llama a su método onSaveInstanceState(). Este método almacena el estado actual de la actividad en un objeto Bundle, que luego se pasa a onCreate() cuando se reinicia la actividad. Si este atributo es "true", no se llamará a onSaveInstanceState() y se pasará null a onCreate() en lugar de Bundle (como cuando la actividad se inicia por primera vez).

Si la configuración es "true", se garantiza que la actividad se podrá reiniciar sin contar con el estado almacenado. Por ejemplo, la actividad que muestra la pantalla de inicio usa esta configuración para asegurarse de que no se quitará si falla por alguna razón.

supportsPictureInPicture

Especifica si la actividad admite pantallas de imagen en imagen. El sistema ignora este atributo si android:resizeableActivity es falso.

Este atributo se agregó en nivel de API 24.

android:taskAffinity
Define la tarea con la cual la actividad tendrá afinidad. En concepto, las actividades con la misma afinidad pertenecen a la misma tarea (a la misma "aplicación" desde la perspectiva del usuario). La afinidad de la actividad raíz define la afinidad de la tarea.

La afinidad determina dos cosas: la tarea a la cual se cambia el campo primario de su actividad (consulta el atributo allowTaskReparenting) y la tarea que albergará la actividad cuando se lance con el marcador FLAG_ACTIVITY_NEW_TASK.

De forma predeterminada, todas las actividades de una aplicación tienen la misma afinidad. Puedes establecer este atributo para agruparlas de forma diferente e incluso disponer actividades definidas en distintas aplicaciones dentro de la misma tarea. Para especificar que la actividad no tiene afinidad con ninguna tarea, establece una string vacía.

Si no se establece este atributo, la actividad hereda la afinidad fijada para la aplicación (consulta el atributo taskAffinity del elemento <application>). El nombre de la afinidad predeterminada de una aplicación es el nombre del paquete establecido por el elemento <manifest>.

android:theme
Referencia a un recurso de estilo que define un tema general para toda la actividad. Establece automáticamente el contexto de la actividad para el uso de este tema (consulta setTheme()) y también puede generar animaciones de "inicio" antes del lanzamiento de la actividad (para una mejor adecuación a la apariencia real de la actividad).

Si no se establece este atributo, la actividad hereda el tema general de la aplicación (del atributo theme del elemento <application>). Si tampoco se establece este atributo, se usa el tema del sistema predeterminado. Para obtener más información, consulta la guía Estilos y temas para desarrolladores.

android:uiOptions
Opciones adicionales para la IU de una actividad.

Debe ser uno de los siguientes valores.

ValorDescripción
"none"Ninguna opción adicional para la IU. Es el valor predeterminado.
"splitActionBarWhenNarrow"Agrega una barra al pie de la pantalla para mostrar elementos de acción en la barra de la aplicación (también conocida como barra de acciones) cuando hay poco espacio horizontal (como en el modo de retrato de un teléfono celular). En lugar de mostrar una pequeña cantidad de elementos de acción en la barra de la aplicación de la parte superior de la pantalla, la barra de la aplicación se divide en la sección de navegación superior y la barra inferior para elementos de acción. De esta forma, se garantiza la disponibilidad de una cantidad razonable de espacio únicamente para los elementos de acción, aunque también para elementos de navegación y títulos en la parte superior. Los elementos de menú no se dividen en las dos barras, sino que siempre aparecen juntos.

Para obtener más información sobre la barra de la aplicación, consulta la clase de capacitación Cómo agregar la barra de aplicaciones.

Este atributo se agregó en nivel de API 14.

android:windowSoftInputMode
Modo en que interactúa la ventana principal de la actividad con la ventana que contiene el teclado de software en pantalla. La configuración de este atributo influye en dos aspectos:
  • El estado del teclado de software (oculto o visible) cuando la actividad ocupa el centro de la atención del usuario.
  • El ajuste de la ventana principal de la actividad (si se reduce el tamaño para hacer lugar al teclado de software o si su contenido se desplaza para hacer visible el punto de foco actual cuando el teclado de software cubre parte de la ventana).

La configuración debe ser uno de los valores que se enumeran en la siguiente tabla o una combinación de un valor "state..." y un valor "adjust...". Si se establecen varios valores en cualquiera de los grupos (varios valores "state...", por ejemplo), los resultados son indefinidos. Cada valor se separa con una barra vertical (|). Por ejemplo:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

Los valores que se establezcan aquí (que no sean "stateUnspecified" y "adjustUnspecified") anulan los valores establecidos en el tema.

Valor Descripción
"stateUnspecified" No se especifica el estado del teclado de software (oculto o visible). El sistema elegirá un estado adecuado o usará la configuración del tema.

Esta es la configuración predeterminada del comportamiento del teclado de software.

"stateUnchanged" El teclado de software se mantiene en su último estado, ya sea visible u oculto, cuando la actividad pasa a primer plano.
"stateHidden" El teclado de software se oculta cuando el usuario elige la actividad, es decir, cuando el usuario navega explícitamente hacia la actividad en lugar de regresar a ella desde otra.
"stateAlwaysHidden" El teclado de software siempre está oculto cuando la ventana principal de la actividad tiene foco de entrada.
"stateVisible" El teclado de software es visible cuando normalmente corresponde (cuando el usuario navega hacia la ventana principal de la actividad).
"stateAlwaysVisible" El teclado de software es visible cuando el usuario elige la actividad, es decir, cuando el usuario navega explícitamente hacia la actividad en lugar de regresar a ella desde otra.
"adjustUnspecified" No se especifica si la ventana principal de la actividad cambia de tamaño para hacer lugar al teclado de software o si los contenidos de la ventana se desplazan para que el foco actual sea visible en la pantalla. El sistema seleccionará automáticamente uno de estos modos en función de si el contenido de la ventana cuenta con vistas de diseño con capacidad de desplazamiento para sus contenidos. Si cuenta con estas vistas, la ventana cambiará de tamaño porque se presupone que el desplazamiento permitirá que todos los contenidos de la ventana sean visibles en un área más pequeña.

Esta es la configuración predeterminada para el comportamiento de la ventana principal.

"adjustResize" Siempre se cambia el tamaño de la ventana principal de la actividad para hacer lugar al teclado de software en la pantalla.
"adjustPan" La ventana principal de la actividad no cambia de tamaño para hacer lugar al teclado de software. En cambio, los contenidos de la ventana se desplazan automáticamente para que el teclado nunca obstruya el punto de foco actual y los usuarios siempre puedan ver lo que escriben. Por lo general, esto es menos conveniente que cambiar el tamaño porque el usuario puede necesitar cerrar el teclado de software para acceder a las partes obstruidas de la ventana e interactuar con ellas.

Este atributo se agregó en el nivel de API 3.

presentado en:
Nivel de API 1 para todos los atributos, salvo para noHistory y windowSoftInputMode, que se agregaron en el nivel de API 3.
consulta también:
<application>
<activity-alias>