<actividad>

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:enabledOnBackInvokedCallback=["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 ve los elementos que no se declararon y nunca los ejecuta.
atributos:
android:allowEmbedded
Indica que la actividad se puede iniciar como un elemento secundario incorporado de otra actividad, especialmente en el caso de que el elemento secundario viva en un contenedor, como una Display que pertenece a otra actividad. Por ejemplo, las actividades empleadas en notificaciones personalizadas de Wear declaran esto 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
Indica si la actividad puede moverse desde la tarea que la inició hasta la tarea por la que tiene afinidad cuando esta pasa a primer plano. Es "true" si se puede mover y "false" si permanece 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 forzar el cambio de campo a la tarea por la que tiene afinidad cuando ya no se muestra la tarea actual. Por lo general, se usa para hacer que las actividades de una aplicación se muevan a la tarea principal asociada con esa 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
Indica 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. 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 principal. 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. Esto es útil en una aplicación como un navegador web, que tiene muchos estados, como varias pestañas abiertas, que los usuarios no quieren perder.

android:autoRemoveFromRecents
Determina si las tareas iniciadas por la actividad con este atributo permanecen en la pantalla Recientes hasta que se complete la última actividad de la tarea. Si es true, la tarea se quita automáticamente de la pantalla Recientes. Esto anula el uso de FLAG_ACTIVITY_RETAIN_IN_RECENTS por parte del llamador. Debe ser un valor booleano: "true" o "false".
android:banner
Es un recurso de elementos 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 brindar 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. Dado que el banner solo se muestra en la pantalla principal, solo las aplicaciones con una actividad que controla el intent CATEGORY_LEANBACK_LAUNCHER lo especifican.

Este atributo se establece como referencia a un recurso de elementos de diseño que contiene la imagen, como "@drawable/banner". No hay ningún banner predeterminado.

Para obtener más información, consulta la sección Cómo utilizar un banner en la pantalla principal en el artículo Cómo comenzar a usar apps para TV.

android:clearTaskOnLaunch
Determina si todas las actividades se quitan de la tarea, excepto la actividad raíz, cuando se vuelve a iniciar desde la pantalla principal. "true" si la tarea siempre se reduce a su actividad raíz, y "false" si no es así. El valor predeterminado es "false". Este atributo solo es relevante para actividades que inician una tarea nueva: la actividad raíz. Se ignora para todas las demás actividades de la tarea.

Cuando el valor es "true", cada vez que los usuarios inician la tarea, regresan a la actividad raíz independientemente de su última actividad en la tarea, sin importar si usaron el botón Atrás o el de la página principal para salir. Cuando el valor es "false", es posible borrar las actividades de la tarea en algunas situaciones, pero no siempre es así. Para obtener más información, consulta el atributo alwaysRetainTaskState.

Supongamos que el usuario inicia la actividad P desde la pantalla principal y, a continuación, pasa a la actividad Q. Luego, 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ó esta marca en "true", todas las actividades que le siguen (en este caso, Q) se quitarán 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.

Este atributo se ignora si no se configura FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:colorMode

Especifica el modo de color de la actividad. Si se especifica, puede ser hdr o wideColorGamut.

Si es hdr, solicita que la actividad se muestre en un alto rango dinámico (HDR) si el dispositivo lo admite.

Si es wideColorGamut, 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 controla 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.

Las siguientes cadenas son valores válidos para este atributo. Si hay más de un valor, se separan con |, como "locale|navigation|orientation".

Valor Descripción
"density" Es un cambio en la densidad de la pantalla, como cuando el usuario especifica una escala de visualización diferente o una pantalla diferente ahora está activa.

Se agregó en el nivel de API 24.

"fontScale" Es un cambio en el factor de escala de la fuente, como cuando el usuario selecciona un nuevo tamaño de fuente global.
"keyboard" Es un cambio en el tipo de teclado, como cuando el usuario conecta un teclado externo.
"keyboardHidden" Es un cambio en la accesibilidad del teclado, como cuando el usuario revela el teclado de hardware.
"layoutDirection" Es un cambio en la dirección del diseño, como de izquierda a derecha (LTR) o de derecha a izquierda (RTL).

Se agregó en el nivel de API 17.

"locale" Es un cambio en la configuración regional, como cuando el usuario selecciona un idioma nuevo en el que se muestra el texto.
"mcc" Es un cambio en el código móvil de país (MCC) de IMSI cuando se detecta una SIM que actualiza el MCC.
"mnc" Es un cambio en el código de red móvil (MNC) de IMSI cuando se detecta una SIM que actualiza el MNC.
"navigation" Es un cambio de TA al tipo de navegación (bola de seguimiento o pad direccional). Normalmente, esto no sucede.
"orientation"

Es un cambio en la orientación de la pantalla, como cuando el usuario rota 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" Es un cambio en el diseño de la pantalla, como cuando se activa una pantalla diferente.
"screenSize" Es un cambio en 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, varía cuando el usuario alterna la orientación vertical y la horizontal.

Se agregó en el nivel de API 13.

"smallestScreenSize" Es un cambio en el tamaño físico de la pantalla.

Representa un cambio de tamaño independientemente de la orientación. Por lo tanto, solo cambia cuando cambia 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 de smallestWidth.

Se agregó en el nivel de API 13.

"touchscreen" Es un cambio en la pantalla táctil. Normalmente, esto no sucede.
"uiMode" Es un cambio en el modo de interfaz de usuario, como cuando el usuario coloca el dispositivo en un conector para escritorios o autos, o cambia 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 llama a onConfigurationChanged(), suele ser necesario recuperar de nuevo todos los recursos, incluidos los diseños de vista y los elementos de diseño, para controlar 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

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

Nota: Durante el inicio 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 agrega 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 Recientes.

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 esa 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. La pantalla Recientes trata la actividad como lo haría de manera predeterminada: muestra una sola tarea para la app, que se reanuda desde la última actividad que el usuario invocó.
"never" La 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 Recientes 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 define con launchMode="standard". Si no se especifica este atributo, se usa documentLaunchMode="none".

android:enabled
Indica si el sistema puede crear una instancia de la actividad. Es "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 es "false", no se podrá crear una instancia.

android:enableOnBackInvokedCallback
Esta marca te permite habilitar animaciones predictivas del sistema a nivel de la actividad. Este comportamiento facilita la migración de apps grandes de varias actividades a gestos atrás predictivos.

Cuando se configura android:enableOnBackInvokedCallback=false, se desactivan las animaciones de atrás predictivo a nivel de la actividad o de la app, según dónde establezcas la etiqueta, y le indica al sistema que ignore las llamadas a la API de la plataforma OnBackInvokedCallback.

android:excludeFromRecents
Indica si la tarea iniciada por esta actividad se excluye de la pantalla Recientes. Es decir, cuando la actividad es la actividad raíz de una tarea nueva, este atributo determina si la tarea aparece en la lista de aplicaciones recientes. Es "true" si la tarea está excluida de la lista y "false" si está incluida. El valor predeterminado es "false".

android:exported
Determina 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 establece en "false" y una app intenta iniciar la actividad, el sistema arroja una ActivityNotFoundException.

Este atributo no es la única manera de limitar la exposición de la actividad a otras aplicaciones. Los permisos también se usan para limitar las entidades externas que pueden invocar a la actividad. Consulta el atributo permission.

android:finishOnTaskLaunch
Indica si una instancia existente de la actividad se cierra, excepto para la actividad raíz, cuando el usuario elige la tarea en la pantalla principal para volver a iniciarla. Es "true" si está cerrado y "false" si no lo está. El valor predeterminado es "false".

Si este atributo y 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, sino que se destruye.

Este atributo se ignora si no se configura FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:hardwareAccelerated
Determina si está habilitada la renderización con aceleración de hardware para esta actividad. "true" si está habilitado y "false" si no lo está. El valor predeterminado es "false".

En Android 3.0 y versiones posteriores, existe un procesador de OpenGL con aceleración de hardware disponible para aplicaciones que permite mejorar el rendimiento de muchas operaciones comunes de gráficos 2D. Cuando se habilita el renderizador con aceleración de 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 consume más RAM.

No todas las operaciones de OpenGL 2D se aceleran. Si habilitas el renderizador con aceleración de hardware, comprueba si la aplicación puede usarlo sin errores.

android:icon
Es 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. Para obtener información sobre la etiqueta, consulta el atributo android:label.

Este atributo se establece como referencia a un recurso de elementos de diseño que contiene la definición de la imagen. Si no está configurado, en su lugar se usa el ícono especificado para toda la aplicación. Para obtener más información, consulta el atributo icon del elemento <application>.

El ícono de la actividad (el que se establece aquí o con el elemento <application>) también es el predeterminado de todos los filtros de intents de la actividad. Para obtener más información, consulta el atributo icon del elemento <intent-filter>.

android:immersive
Establece el parámetro de configuración de modo envolvente para la actividad actual. Si es "true", el miembro ActivityInfo.flags siempre tiene configurado su conjunto de bits FLAG_IMMERSIVE, incluso si el modo envolvente cambia en el tiempo de ejecución mediante el método setImmersive().
android:label
Es una etiqueta de la actividad que los usuarios pueden leer. La etiqueta se muestra en la pantalla cuando la actividad se representa 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 predeterminada de todos los filtros de intents de la actividad. Para obtener más información, consulta el atributo label del elemento <intent-filter>.

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

android:launchMode
Son instrucciones para iniciar la actividad. Existen cinco modos, que funcionan junto con las marcas de actividad (constantes FLAG_ACTIVITY_*) en objetos Intent para determinar qué sucede cuando se llama a la actividad para controlar un intent:

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

El modo predeterminado es "standard".

Como se muestra en la siguiente tabla, los modos se dividen en dos grupos principales, con actividades "standard" y "singleTop" en un lado y actividades "singleTask", "singleInstance" y "singleInstancePerTask" en el otro. 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 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, en cuyo caso se elige una tarea diferente. Para obtener más información, consulta el atributo taskAffinity.

En cambio, las actividades "singleTask", "singleInstance" y "singleInstancePerTask" tienen comportamientos diferentes. "singleInstancePerTask" siempre está en la raíz de la tarea de la actividad. Además, el dispositivo solo puede contener una instancia de la actividad "singleInstance" a la vez, mientras que de la actividad "singleInstancePerTask se pueden crear varias instancias 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. Sin embargo, el dispositivo solo puede contener una tarea para ubicar la actividad "singleTask" en la raíz de la tarea de la actividad.

Los modos "standard" y "singleTop" difieren uno del otro en un aspecto: cada vez que hay un intent nuevo para una actividad "standard", se crea una instancia nueva de la clase para responder a ese intent. Cada instancia administra un intent individual. De manera similar, una instancia nueva de una actividad "singleTop" también puede crearse para que administre un intent nuevo.

Sin embargo, si la tarea de destino ya cuenta con una instancia de la actividad en la parte superior de la pila, esa instancia recibe el intent nuevo en una llamada a onNewIntent(). No se crea una instancia nueva. De lo contrario, si una instancia existente de la actividad "singleTop" está en la tarea de destino, pero no en la parte superior de la pila, o si está en la parte superior de la pila, pero no en la tarea de destino, se crea una instancia nueva y esta se envía a la pila.

De forma similar, si el usuario navega hacia arriba a una actividad en la pila actual, el modo de lanzamiento de la actividad superior determinará el comportamiento. Si el modo de lanzamiento de la actividad superior es singleTop (o el intent up contiene FLAG_ACTIVITY_CLEAR_TOP), el componente superior se traslada a la parte superior de la pila y su estado se conserva.

El método onNewIntent() de la actividad superior recibe el intent de navegación. Si el modo de lanzamiento de la actividad superior es standard (y el intent up no contiene FLAG_ACTIVITY_CLEAR_TOP), se quitan de la pila la actividad actual y su componente superior, y se crea una nueva instancia de la actividad superior 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, que son necesariamente las actividades "standard" y "singleTop", formen parte de su tarea.

Una actividad "singleInstance", en cambio, no permite que otras actividades formen parte de su tarea. Esta debe ser la única actividad de 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 de 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 hay 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. Estos generan un modelo de interacción que probablemente resulte poco familiar para los usuarios y sea muy diferente del de otras aplicaciones.

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

Para obtener más información sobre los modos de lanzamiento y su interacción con marcas de Intent, consulta Tareas y la pila de actividades.

android:lockTaskMode
Determina el modo en que el sistema presenta esta actividad cuando el dispositivo se ejecuta en modo de tareas bloqueadas.

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 apps que no estén incluidas en la lista de entidades permitidas ni pueden regresar a la pantalla principal (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 apps de sistema y con privilegios pueden ejecutarse en este modo sin que haga falta incluirlas en la lista de entidades permitidas.

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 lockTask, y el dispositivo del usuario no puede fijar dichas tareas desde la pantalla de Recientes.

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 el paquete, este modo es idéntico a normal.
"always"

Las tareas que se originan en esta actividad siempre se lanzan en el modo de tareas bloqueadas. 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 tareas bloqueadas.

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
Es la cantidad máxima de tareas que tienen la raíz en esta actividad en la pantalla Recientes. Cuando se alcanza esta cantidad de entradas, el sistema quita la instancia que se usó con mayor anterioridad de la pantalla de Recientes. Los valores válidos son números enteros del 1 al 50, o del 1 al 25 en dispositivos con poca memoria. El cero no es válido. 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.

android:multiprocess
Indica si una instancia de la actividad se puede iniciar en el proceso del componente que la inició. Es "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
Es el nombre de la clase que implementa la actividad, una subclase de Activity. Por lo general, el valor del atributo es un nombre de clase completamente calificado, como "com.example.project.ExtracurricularActivity". Sin embargo, para abreviar, si el primer carácter del nombre es un punto, como ".ExtracurricularActivity", se agrega al espacio de nombres especificado en el archivo build.gradle.

Una vez que publiques tu aplicación, no cambies este nombre, a menos que configures android:exported="false". No hay ningún valor predeterminado. Se debe especificar el nombre.

android:noHistory
Indica si la actividad se quita de la pila de actividades y si finaliza cuando se llama al método finish(), cuando el usuario sale de la actividad y esta ya no está visible en la pantalla. Es "true" si finaliza y "false" si no lo hace. El valor predeterminado es "false".

Un valor de "true" significa que la actividad no deja un seguimiento histórico. No permanece en la pila de actividades de la tarea, por lo que el usuario no puede 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
Es el nombre de clase del componente superior 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 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 superior con un elemento <meta-data> que especifique un valor para "android.support.PARENT_ACTIVITY".

<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 superior y admitir la navegación hacia arriba, consulta el documento 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
Es el nombre del permiso que los clientes deben tener para poder iniciar la actividad o para que la actividad responda a un intent. Si un llamador de startActivity() o startActivityForResult() no recibe el permiso especificado, su intent no se entrega 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 estará protegida por un permiso.

Para obtener más información sobre los permisos, consulta la sección Permisos de la descripción general del manifiesto de la app y las Sugerencias de seguridad.

android:process
Es el nombre del proceso en el que se ejecuta la actividad. Por lo general, todos los componentes de una aplicación se ejecutan en un nombre de proceso predeterminado que se crea para la aplicación y no es necesario usar 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 app 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 y reducir 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 básico por el de la próxima actividad de la tarea.

Si la siguiente actividad también tiene este atributo establecido en "true", cederá el Intent básico 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 establecido como "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 Recientes.

android:resizeableActivity

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

Si estableces este atributo como "true", el usuario puede iniciar la actividad en el modo de pantalla dividida o de formato libre. Si configuras el atributo como "false", 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.

Establecer este atributo como "false", 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 significa que tu app tenga acceso exclusivo a recursos.

Si tu app tiene como objetivo el nivel de API 24 o uno superior, pero no especificas un valor para este atributo, el valor predeterminado se establece como "true".

Si tu app tiene como objetivo el nivel de API 31 o uno 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 se establece 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

Corresponde a la orientación de la actividad en la pantalla del dispositivo.

En Android 7.0 (nivel de API 24) y versiones posteriores, el sistema ignora los cambios durante el tiempo de ejecución de este atributo si la actividad está en el modo multiventana.

En Android 12 (nivel de API 31) y versiones posteriores, los fabricantes de dispositivos pueden configurar pantallas de dispositivos individuales (como la pantalla en tamaño tablet de un dispositivo plegable) para ignorar la especificación de orientación y forzar que una app especificada como vertical solo esté en posición vertical, pero en formato letterbox en orientación horizontal, lo que garantiza que la app tenga una relación de aspecto vertical, pero pueda orientarse para mejorar la usabilidad.

El valor puede ser una de las siguientes cadenas:

"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) podría variar de un dispositivo a otro.
"behind" Es la misma orientación de la actividad inmediatamente debajo de ella en la pila de actividades.
"landscape" Corresponde a la orientación horizontal (la pantalla es más ancha que alta).
"portrait" Corresponde a la orientación vertical (la pantalla es más alta que ancha).
"reverseLandscape" Corresponde a la orientación horizontal en la dirección opuesta al modo horizontal convencional. Se agregó en el nivel de API 9.
"reversePortrait" Corresponde a la orientación vertical en dirección opuesta al modo vertical convencional. Se agregó en el nivel de API 9.
"sensorLandscape" Corresponde a la 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" Corresponde a la 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" Corresponde a la 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" Corresponde a la 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 rota el dispositivo. Sin embargo, algunos dispositivos no rotan a las cuatro orientaciones posibles de forma predeterminada. Para usar 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 la orientación para cualquiera de las cuatro orientaciones. Es similar a "sensor", con la excepción de que esto permite cualquiera de las cuatro orientaciones de pantalla posibles, independientemente de lo que el dispositivo admita con normalidad. Por ejemplo, algunos dispositivos no suelen usar el modo vertical inverso ni el horizontal inverso, pero esto permite esas orientaciones. 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 rota en función de cómo el usuario mueva el dispositivo.
"user" Corresponde a 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. El valor que declares permitirá que distintos servicios, como Google Play, apliquen filtros para que tu aplicación esté disponible únicamente en dispositivos que admitan la orientación de tus actividades. Por ejemplo, si declaras "landscape", "reverseLandscape" o "sensorLandscape", tu aplicación solo estará disponible en dispositivos que admitan orientación horizontal.

También declara explícitamente que tu aplicación requiere orientación vertical u horizontal con el elemento <uses-feature>, como <uses-feature android:name="android.hardware.screen.portrait"/>. Este es un comportamiento de filtrado que proporcionan Google Play y otros servicios compatibles. La plataforma no controla si tu app puede instalarse cuando un dispositivo solo admite ciertas orientaciones.

android:showForAllUsers

Indica 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 (como "true" o "false") o un recurso o tema que contenga un valor booleano.

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

android:stateNotNeeded
Determina si la actividad se puede finalizar y reiniciar correctamente sin haber guardado su estado. Es "true" si se puede reiniciar sin referencia a su estado anterior y "false" si este es necesario. 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", es posible que no se llame a onSaveInstanceState() y que se pase onCreate() a null en lugar de Bundle, como sucede cuando comienza la actividad por primera vez.

Si se establece como "true", significa que la actividad se puede reiniciar sin un estado retenido. Por ejemplo, la actividad que muestra la pantalla principal usa esta configuración para asegurarse de que no se quite si falla por alguna razón.

android:supportsPictureInPicture

Especifica si la actividad admite visualización de pantalla en pantalla.

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 superior de su actividad (consulta el atributo allowTaskReparenting) y la tarea que alberga la actividad cuando se lanza 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 a ninguna tarea, establece una cadena vacía.

Si no se establece este atributo, la actividad hereda la afinidad establecida para la aplicación. Consulta el atributo taskAffinity del elemento <application>. El nombre de la afinidad predeterminada de una aplicación es el espacio de nombres configurado en el archivo build.gradle.

android:theme
Es la 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 theme 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 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 para 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 el teléfono celular en modo Retrato. 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 las dos barras. Siempre aparecen juntos.

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

Este atributo se agregó en el 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 dos aspectos:
  • El estado del teclado en pantalla (si está oculto o es visible) cuando la actividad ocupa el centro de la atención del usuario
  • El tamaño de la ventana principal de la actividad (si se reduce su tamaño para hacer lugar para el teclado en pantalla o si su contenido se desplaza de modo que el foco actual sea visible cuando el teclado en pantalla cubra parte de la ventana)

El parámetro de 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...". La configuración de varios valores en cualquiera de los grupos, como varios valores "state...", tiene resultados indefinidos. Los valores individuales se separan con una barra vertical (|), como se muestra en el siguiente 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 si el teclado en pantalla está oculto o es visible. El sistema elige un estado adecuado o usa la configuración del tema.

Este es el parámetro de configuración predeterminado del comportamiento del teclado en pantalla.

"stateUnchanged" El teclado en pantalla se mantiene en su último estado, ya sea visible u oculto, cuando la actividad pasa a primer plano.
"stateHidden" El teclado en pantalla 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 en pantalla siempre está oculto cuando la ventana principal de la actividad tiene foco de entrada.
"stateVisible" El teclado en pantalla se vuelve 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 en pantalla o si el contenido de la ventana se desplaza de modo que el foco actual sea visible en la pantalla. El sistema selecciona 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.

Este es el parámetro de configuración predeterminado 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 en pantalla.
"adjustPan" La ventana principal de la actividad no cambia de tamaño para hacer lugar al teclado en pantalla. 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 en pantalla 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, excepto noHistory y windowSoftInputMode, que se agregaron en el nivel de API 3.
consulta también:
<application>
<activity-alias>