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" | "singleInstancePerTask"]
          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>
se incluye 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á los servicios que no estén declarados en el archivo, los 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
Determina si la actividad puede trasladarse de la tarea que la inició a la tarea con la que tiene afinidad cuando esta pasa al primer plano ("true" si se puede mover 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 la asocia a la tarea de la actividad que la inició y permanece allí durante todo su ciclo. Puedes usar este atributo para cambiar su campo primario a la tarea con la que tiene una afinidad cuando su tarea ya no se muestra. Generalmente, se usa para lograr que las actividades de una aplicación se trasladen a la tarea principal asociada a la 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, 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 solo es relevante para la actividad raíz de una tarea y se ignora para todas las demás 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 visitó 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
Es un recurso de elemento de diseño que proporciona un banner gráfico extendido para su elemento 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 principal de Android TV. Como el banner solo se muestra en la pantalla principal, debe especificarse únicamente en aplicaciones que tengan una actividad para administrar el intent CATEGORY_LEANBACK_LAUNCHER.

Este atributo debe establecerse como referencia a un recurso de elemento de diseño que contiene la imagen (por ejemplo, "@drawable/banner"). No hay un banner predeterminado.

Para obtener más información, consulta Cómo utilizar un banner en la pantalla principal en el artículo "Cómo comenzar a usar 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 todas las demás 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 principal y, a continuación, pasa a la actividad Q. A continuación, 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", se quitarán todas las actividades que le siguen (Q en este caso) cuando el usuario inicie la actividad P desde la pantalla principal. Por lo tanto, el usuario solamente verá P cuando regrese a la tarea.

Si este atributo y allowTaskReparenting son "true", cualquier actividad cuyo campo superior pueda cambiarse a otra tarea se transfiere a la tarea con la que comparte la afinidad. Las actividades restantes se descartan, como se describió anteriormente.

Este atributo se ignora si no se configura FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:colorMode

Solicita que la actividad se muestre usando el modo de amplia gama de colores en dispositivos compatibles. En este modo, una ventana puede representarse fuera de la gama 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 de amplia gama de colores, consulta Cómo mejorar gráficos con contenido de una amplia gama 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: Usa este atributo solo en casos especiales para mejorar el rendimiento y la capacidad de respuesta de la aplicación. Para obtener más información, consulta Cómo administrar los cambios de configuración.

Todas las strings siguientes son valores válidos para este atributo. Si hay más de un valor, se separa 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 se orienta a Android 3.2 (nivel de API 13) o versiones posteriores, también declara las configuraciones "screenLayout" y "screenSize" porque el diseño y el tamaño de la pantalla pueden cambiar cuando un dispositivo cambia entre la orientación vertical y 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 del intent básico que coincidan con los del 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 el 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 debe definirse con launchMode="standard". Si no se especifica este atributo, se usa 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" (ya que ambos son valores predeterminados) para que el sistema pueda crear una instancia de la actividad. Si alguno de ellos es "false", no se podrá crear una instancia de la actividad.

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. Configura "true" si la tarea debe excluirse de la lista. Establece "false" si debe incluirse. El valor predeterminado es "false".

android:exported
Este elemento establece si los componentes de otras aplicaciones pueden iniciar la actividad:

  • Si es "true", cualquier app puede acceder a la actividad y se puede iniciar con su nombre de clase exacto.
  • Si es "false", la actividad solo se puede iniciar con componentes de la misma aplicación, aplicaciones con el mismo ID de usuario o componentes del sistema con privilegios. Este es el valor predeterminado cuando no hay filtros de intents.

Si una actividad de tu app incluye filtros de intents, establece este elemento en "true" para permitir que otras apps la inicien. Por ejemplo, si la actividad es la principal de la app e incluye el objeto category "android.intent.category.LAUNCHER".

Si este elemento se configura como "false" y una app intenta iniciar la actividad, el sistema arrojará un objeto ActivityNotFoundException.

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

android:finishOnTaskLaunch
Determina si una instancia existente de la actividad debe cerrarse (finalizar), excepto para la actividad raíz, cada vez que el usuario vuelve a iniciar su tarea (elige la tarea en la pantalla principal). "true" si se debe cerrar y "false" si no se debe cerrar. El valor predeterminado es "false".

Si este atributo y allowTaskReparenting son "true", este 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.

Este atributo se ignora si no se configura FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:hardwareAccelerated
Determina si se debe habilitar o no el procesamiento acelerado por hardware para esta actividad: "true" si debe habilitarse y "false" si no. El valor predeterminado es "false".

A partir de Android 3.0, las aplicaciones disponen de un acelerado por hardware OpenGL para mejorar el rendimiento de varias operaciones comunes de gráficos 2D. Cuando se habilita el procesador acelerado por hardware, se acelera la mayoría de las operaciones en Canvas, Paint, Xfermode, ColorFilter, Shader y la cámara. De esta manera, se obtienen animaciones y desplazamientos más fluidos, y una capacidad de respuesta mejorada en general, incluso para las aplicaciones que no usan explícitamente las bibliotecas OpenGL del framework. Debido al aumento de los recursos necesarios para habilitar la aceleración de hardware, tu app consumirá más RAM.

Ten en cuenta que no todas las operaciones 2D de OpenGL se aceleran. Si habilitas el procesador acelerado por hardware, prueba tu aplicación para garantizar que pueda usarlo sin 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 referencia a un recurso de elemento de diseño que contiene la definición de la imagen. Si no se configura, en su lugar se usará 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 <intent-filter> del elemento icon).

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 no se establece este atributo, en su lugar se usa la etiqueta configurada para toda la aplicación (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 <intent-filter> del elemento label).

La etiqueta debe establecerse como una referencia a un recurso de string de manera que pueda localizarse como otras strings en la interfaz de usuario. Sin embargo, para tu conveniencia durante el desarrollo de la aplicación, también se puede establecer como string sin procesar.

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 un intent. Son las siguientes:

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

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", "singleInstance" y "singleInstancePerTask". Se puede crear una instancia de actividades con el modo de lanzamiento "standard" o "singleTop" varias veces. Las instancias pueden pertenecer a cualquier tarea y pueden ubicarse en cualquier lugar de la tarea 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", "singleInstance" y "singleInstancePerTask" tienen comportamientos diferentes. "singleInstancePerTask" siempre se encuentra en la raíz de la tarea de la actividad. Además, el dispositivo puede contener solo una instancia de la actividad "singleInstance" a la vez, mientras que de la actividad "singleInstancePerTask" se pueden crear instancias varias veces en diferentes tareas cuando se configura FLAG_ACTIVITY_MULTIPLE_TASK o FLAG_ACTIVITY_NEW_DOCUMENT. Una actividad con el modo de lanzamiento "singleTask" combina los comportamientos de "singleInstance" y "singleInstancePerTask": se puede crear una instancia de la actividad varias veces y se puede ubicar en cualquier tarea de la misma taskAffinity. Mientras tanto, el dispositivo solo puede contener una tarea para ubicar la actividad "singleTask" en la raíz de la tarea.

Los modos "standard" y "singleTop" difieren entre sí en un solo aspecto: cada vez que hay un nuevo intent para una actividad "standard", se crea una nueva instancia de la clase para responder a ese intent. Cada instancia administra un intent individual. Del mismo modo, se puede crear una instancia nueva de una actividad "singleTop" para manejar un nuevo intent. 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á el nuevo 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 el 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 el intent de navegación. Si el modo de lanzamiento de la actividad principal es standard (y el 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 el intent de navegación.

El modo "singleInstance" también difiere de "singleTask" y "singleInstancePerTask" en un solo aspecto: una actividad con el modo de lanzamiento "singleTask" o "singleInstancePerTask" permite que otras actividades (necesariamente actividades "standard" y "singleTop") formen parte de su tarea. Por otro lado, una actividad "singleInstance" no permite que otras actividades formen parte de su tarea; debe ser la única actividad en la tarea. Si inicia otra actividad, esta se asignará a otra tarea; como si FLAG_ACTIVITY_NEW_TASK estuviera en el 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 el intent hacia ella.
"singleTop" Condicionalmente Si una instancia de una actividad ya existe en la parte superior de la tarea actual, el sistema dirige el intent a esa instancia mediante un llamado a su método onNewIntent(), en lugar de crear una nueva instancia de la actividad.
Lanzamientos especializados
(no recomendado para uso general)
"singleTask" Condicionalmente El sistema crea la actividad en la raíz de una tarea nueva o ubica la actividad en una tarea existente con la misma afinidad. Si ya existe una instancia de la actividad y esta se encuentra en la raíz de la tarea, el sistema direcciona el intent a la instancia existente mediante una llamada a su método onNewIntent(), en lugar de crear una nueva.
"singleInstance" No Es igual que singleTask", salvo que el sistema no inicia otras actividades en la tarea que contiene la instancia. La actividad siempre es el único miembro de su tarea.
"singleInstancePerTask" Condicionalmente La actividad solo puede ejecutarse como la actividad raíz de la tarea, la primera actividad que creó la tarea, y, por lo tanto, solo habrá una instancia de esta actividad en una tarea. Sin embargo, se pueden crear instancias de la actividad varias veces en diferentes tareas.

Como se muestra 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, singleInstance y singleInstancePerTask) 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 el modo en que se 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 tareas bloqueadas. Cuando el sistema se ejecuta en este modo, los usuarios del dispositivo no suelen ver las notificaciones, tampoco pueden acceder a aplicaciones que no estén incluidas en la lista blanca ni pueden regresar a la pantalla de inicio (salvo que la app de Home esté autorizada). Solo las apps incluidas en la lista de entidades permitidas por un controlador de política de dispositivo (DPC) pueden ejecutarse si el sistema está en el modo de tareas bloqueadas. 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 tareas bloqueadas, pero es posible usar startLockTask() para colocarlas en dicho modo.
"never"

Las tareas no se lanzan en el modo de tareas bloqueadas 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 como 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 como 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 app se ejecuta en un dispositivo con una relación de aspecto más ancha, el sistema aplica automáticamente el formato letterbox a la app 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 como verdadero, dado que esto significa que la actividad es compatible con cualquier tamaño.

Para obtener más información sobre este atributo, consulta Cómo declarar una relación de aspecto máxima en Cómo declarar una compatibilidad de pantalla restringida.

android:multiprocess
Indica si una instancia de la actividad puede iniciarse 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 completo (como "com.example.project.ExtracurricularActivity"). Sin embargo, como versión abreviada, si el primer carácter del nombre es un punto (por ejemplo, ".ExtracurricularActivity"), se agrega al espacio de nombres especificado en el archivo build.gradle.

Una vez que publiques tu aplicación, no deberías cambiar este nombre (a menos que hayas configurado 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 sale de la actividad y no se muestra en pantalla ("true" si se debe finalizar y "false" si no se debe finalizar). El valor predeterminado es "false".

Si el valor es "true", significa que 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 <activity> del elemento android:name.

El sistema lee este atributo para determinar la actividad que se debe iniciar cuando el usuario presiona el botón Arriba 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 el modo en que 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 el intent de lanzamiento de la actividad raíz.

Cuando el intent de lanzamiento de tu app carga la actividad raíz de tu app, esta 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: Este valor de atributo afecta el comportamiento de tu app solo si se establece en la actividad raíz de la app.

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 un intent carga una actividad cuyo atributo persistableMode se establece en persistAcrossReboots en tu app, 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: Este valor de atributo afecta el comportamiento de tu app, incluso si se establece en una actividad que no sea la actividad raíz de la app.

persistNever

No se preserva el estado de la actividad.

Nota: Este valor de atributo afecta el comportamiento de tu app solo si se establece en la actividad raíz de la app.

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 un 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 permisos, consulta la sección Permisos de la introducción y el documento 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 esta 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 (":"), cuando es necesario, se crea un nuevo proceso, que es privado para la aplicación, y la actividad se ejecuta en ese proceso. Si el nombre del proceso comienza con un carácter en minúscula, la actividad se ejecutará en un proceso global con ese nombre siempre que tenga permiso para hacerlo. De esta manera, los componentes de diferentes aplicaciones pueden compartir un mismo proceso, lo que reduce 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 el 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á el 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 configurado en "false". El valor predeterminado es "false".

El atributo "true" también permite que la actividad use ActivityManager.TaskDescription para cambiar las etiquetas, los colores y los íconos en la pantalla de descripción general.

resizeableActivity

Especifica si la app admite el modo multiventana. Puedes establecer este atributo en el elemento <activity> o <application>.

Si estableces este atributo como verdadero, el usuario puede iniciar la actividad en el modo de pantalla dividida o de formato libre. Si configuras el atributo como falso, la app no se puede probar ni optimizar para un entorno multiventana. El sistema aún podría poner la actividad en modo multiventana con el modo de compatibilidad aplicado. Si configuras ese atributo como verdadero, no garantiza que no haya otras apps en el modo multiventana visibles en la pantalla (como pantalla en pantalla) ni en otras pantallas. Por lo tanto, configurar esta marca no garantiza que tu app tenga acceso a recursos exclusivos.

Si tu app está orientada al nivel de API 24 o superior, pero no especificas un valor para este atributo, el valor predeterminado se establece como verdadero.

Si tu app se orienta al nivel de API 31 o superior, este atributo funciona de manera diferente en pantallas grandes y pequeñas.

  • Pantallas grandes (ancho mínimo >= 600 dp): Todas las apps admiten el modo multiventana. El atributo indica si se puede cambiar el tamaño de una app (no si es compatible con el modo multiventana). Si se establece resizeableActivity="false", la app se pone en modo de compatibilidad cuando es necesario para ajustarse a las dimensiones de la pantalla.
  • Pantallas pequeñas (ancho mínimo < 600 dp): Si se establece resizeableActivity="true", y el ancho y la altura mínimos de la actividad están dentro de los requisitos para multiventanas, la actividad admite el modo multiventana. Si es resizeableActivity="false", la app no admite el modo multiventana, independientemente del ancho y la altura mínimos de la actividad.

Nota: Los fabricantes de dispositivos pueden anular el comportamiento del nivel de API 31.

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

Nota: El valor de actividad raíz de una tarea se aplica a todas las actividades adicionales iniciadas en la tarea. Es decir, si se puede modificar el tamaño de la actividad raíz de una tarea, el sistema tratará todas las demás actividades de la tarea como redimensionables. Si no se puede cambiar el tamaño de la actividad raíz, no se podrá modificar el tamaño de las otras actividades de la tarea.

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 multiventana.

El valor puede ser una de las siguientes strings:

"unspecified" Es 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. Sin embargo, según la configuración del dispositivo, es posible que no se permita la rotación al revés. 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. Sin embargo, según la configuración del dispositivo, es posible que no se permita la rotación al revés. 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 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á onCreate() a null 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 pantalla en pantalla.

Este atributo se agregó en la API nivel 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 <application> del elemento taskAffinity). El nombre de la afinidad predeterminada de una aplicación es el espacio de nombres configurado en el archivo build.gradle.

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 para desarrolladores sobre Estilos y temas.

android:uiOptions
Corresponde a opciones adicionales para la IU de una actividad.

Debe ser uno de los siguientes valores.

ValorDescripción
"none"No hay opciones de IU adicionales. Es el valor predeterminado.
"splitActionBarWhenNarrow"Agrega una barra en la parte inferior de la pantalla a fin de mostrar elementos de acción en la barra de la app (también conocida como barra de acciones) cuando se limite a un espacio horizontal (como cuando se encuentra en modo Retrato en el teléfono). En lugar de que aparezcan algunos elementos de acción en la barra de la app en la parte superior de la pantalla, la barra se divide en la sección de navegación en la parte superior y en la barra inferior para los elementos de acción. De esta manera, se garantiza que una cantidad de espacio razonable esté disponible no solo para los elementos de acción, sino también para los elementos de título y navegación en la parte superior. Los elementos de menú no se dividen en dos barras; siempre aparecen juntos.

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

Este atributo se agregó en la API nivel 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 configuran varios valores en cualquiera de los grupos (varios valores "state...", los resultados son indefinidos. Los valores individuales se separan 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 el usuario elige la actividad, es decir, cuando el usuario navega explícitamente hacia la actividad en lugar de regresar a ella desde otra.
"stateAlwaysVisible" El teclado en pantalla es visible cuando la ventana recibe el foco de entrada.
"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.

primera inclusión:
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>