- sintaxis:
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource" android:canDisplayOnRemoteDevices=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:colorMode=[ "hdr" | "wideColorGamut"] android:configChanges=["colorMode", "density", "fontScale", "fontWeightAdjustment", "grammaticalGender", "keyboard", "keyboardHidden", "layoutDirection", "locale", "mcc", "mnc", "navigation", "orientation", "screenLayout", "screenSize", "smallestScreenSize", "touchscreen", "uiMode"] 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:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" | "readOrWrite" | "write"] 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 otro en particular, especialmente cuando el elemento secundario vive en un contenedor, como un
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 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, esto 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, el cambio del campo primario a otra tarea se limita a los modos"standard"
y"singleTop"
. Consulta también el atributolaunchMode
. 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 deFLAG_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:canDisplayOnRemoteDevices
-
Indica si la actividad puede mostrarse en un dispositivo remoto que pueden o no estar ejecutando Android. Debe ser un valor booleano:
"true"
o"false"
.El valor predeterminado de este atributo es
"true"
. 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 atributoalwaysRetainTaskState
.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
owideColorGamut
.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 gamaSRGB
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 "colorMode"
Cambiaron las funciones del modo de color de la pantalla (gamut de colores o rango dinámico).
Nota: El modo de color que la actividad solicita con el atributo
colorMode
o en el tiempo de ejecución es distinto de la capacidad para diferentes modos de color. Una actividad que cambia el modo de color que está usando no provoca un cambio de configuración porque las capacidades de color de la pantalla no han cambiado."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 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. "fontWeightAdjustment"
Cambió la cantidad del aumento de grosor de la fuente. "grammaticalGender"
Cambió el género gramatical del idioma. Consulta GrammaticalInflectionManager
Se agregó en el nivel de API 34.
"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 aonNewIntent(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
yFLAG_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 marcadoresFLAG_ACTIVITY_NEW_DOCUMENT
yFLAG_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 conlaunchMode="standard"
. Si no se especifica este atributo, se usadocumentLaunchMode="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 atributoenabled
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 del gesto atrás predictivo a nivel de la actividad o de la app, según el lugar en el que establezcas la etiqueta, y le indica al sistema que ignore las llamadas alOnBackInvokedCallback
de la API de la plataforma. android:excludeFromRecents
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;"false"
si es incluye. El valor predeterminado es"false"
.android:exported
Si la actividad puede iniciarse mediante componentes de otros aplicaciones:
- 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 objetocategory
android.intent.category.LAUNCHER
.Si este elemento se configura como
"false"
y una app intenta iniciar la actividad, el sistema arrojará unaActivityNotFoundException
.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
.- Si es
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
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. El icono a menudo va acompañado de 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 ícono predeterminado de todos los filtros de intents de la actividad. Para obtener más información, consulta el atributoicon
del elemento<intent-filter>
.android:immersive
- Establece el parámetro de configuración de modo envolvente para la actividad actual. Si es
"true"
, el miembroActivityInfo.flags
siempre tiene suFLAG_IMMERSIVE
bit establecido, incluso si el El modo envolvente cambia durante el tiempo de ejecución con el métodosetImmersive()
. android:label
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, se establece la etiqueta para toda la aplicación en su lugar. consulta el elemento
<application>
label
.La etiqueta de la actividad (la que se establece aquí o con el elemento
<application>
) también es la etiqueta predeterminada de todos los filtros de intents de la actividad. Para obtener más información, consulta el atributolabel
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. Hay cinco modos, que funcionan junto con las marcas de actividad (constantes
FLAG_ACTIVITY_*
) en objetosIntent
para determinar qué sucede cuando se llama a la actividad para manejar 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 objetoIntent
contenga una instrucciónFLAG_ACTIVITY_NEW_TASK
, en cuyo caso se elige una tarea diferente. Para obtener más información, consulta el atributotaskAffinity
.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 configuraFLAG_ACTIVITY_MULTIPLE_TASK
oFLAG_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 mismataskAffinity
. 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 intentup
contieneFLAG_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 esstandard
(y el intentup
no contieneFLAG_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 siFLAG_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"
Sí 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 al regresar 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 el modo de tareas bloqueadas, los usuarios de dispositivos no suelen ver las notificaciones, el acceso a apps que no están incluidas en la lista de entidades permitidas, o regresar a la pantalla principal, a menos que la app de Home esté incluida en la lista de entidades permitidas.
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 aalways
, con la excepción de que la actividad debe llamar astopLockTask()
antes de poder terminar si es la última tarea bloqueada. Si el DPC no autoriza el paquete, este modo es idéntico anormal
."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
- Define si se puede lanzar una instancia de la actividad 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 archivobuild.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á aonActivityResult()
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 enpersistAcrossReboots
.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 usesonSaveInstanceState()
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 enpersistAcrossReboots
. Si una actividad no tiene un atributopersistableMode
establecido enpersistAcrossReboots
o si se lanza usando el marcadorIntent.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 enpersistAcrossReboots
en tu app, la actividad recibe un objetoPersistableBundle
en su métodoonCreate()
. Por lo tanto, puedes usaronSaveInstanceState()
para preservar el estado de una actividad tras el reinicio de un dispositivo siempre y cuando su atributopersistableMode
esté establecido enpersistAcrossReboots
.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()
ostartActivityForResult()
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, lo que reduce el uso de recursos.
El elemento
<application>
process
puede establecer un nombre de proceso predeterminado diferente para todos los componentes.android:relinquishTaskIdentity
Define si la actividad cede sus identificadores de tarea a una actividad superior en el en la pila de tareas. Una tarea cuya actividad raíz haya establecido este atributo en
"true"
reemplaza la baseIntent
por la de la siguiente actividad de la tarea.Si la siguiente actividad también tiene este atributo establecido en
"true"
, cederá elIntent
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 usarActivityManager.TaskDescription
para cambiar las etiquetas, los colores y los íconos en la pantalla Recientes.android:requireContentUriPermissionFromCaller
-
Especifica los permisos necesarios para iniciar esta actividad cuando se pasa URI de contenido. El valor predeterminado es
none
, lo que significa que no hay valores específicos se requieren permisos. La configuración de este atributo restringe la actividad de una función se basa en los permisos del invocador. Si el invocador no tiene los permisos necesarios, se denegará el inicio de la actividad a través de un elementoSecurityException
.Ten en cuenta que la aplicación funciona para los URI de contenido dentro
Intent.getData()
:Intent.EXTRA_STREAM
, yIntent.getClipData()
Puede ser un valor de cadena con "\\;" para escapar caracteres como '\\n' o "\\uxxxx" para un carácter Unicode;
Debe ser uno de los siguientes valores constantes.
Constante Valor Descripción ninguno 0 Es la configuración predeterminada, no se requieren permisos específicos. leer 1 Aplica de manera forzosa al invocador acceso de lectura a los URI de contenido que se pasaron. Lectura y escritura 4 Aplica de manera forzosa al invocador acceso de lectura y escritura a los URI de contenido que se pasaron. readOrWrite 3 Aplica de manera forzosa al invocador acceso de lectura o escritura a los URI de contenido que se pasaron. escritura 2 Aplica de manera forzosa al invocador acceso de escritura a los URI de contenido que se pasaron. 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 estableceresizeableActivity="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.
- 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
android:screenOrientation
La orientación solicitada de la actividad.
Cuando una actividad ocupa toda la pantalla, la orientación solicitada actúa como una sugerencia de cambia la orientación en esa pantalla para que coincida con el valor solicitado. Esto puede generar una que difiere de la orientación física de la pantalla en el espacio, lo que requiere al usuario rote el dispositivo para seguir usando la aplicación. En Android 12 (nivel de API) 31) y versiones posteriores, los fabricantes de dispositivos pueden configurar dispositivos individuales pantallas (como la pantalla del tamaño de una tablet de un plegable) para ignorar esta sugerencia y, en su lugar, forzar el formato letterbox para una actividad dentro de la orientación preferida por el usuario del dispositivo. Esta hace que la orientación de la actividad coincida con la solicitada sin necesidad de que el usuario rotar físicamente su dispositivo.
En el modo multiventana, la orientación solicitada no actúa como una sugerencia para la configuración general orientación. Si la actividad es letterbox, las solicitudes la orientación afecta el formato letterbox que se aplica a la actividad.
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 quefullSensor
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 objetoBundle
, que luego se pasa aonCreate()
cuando se reinicia la actividad. Si este atributo es"true"
, es posible que no se llame aonSaveInstanceState()
y que se paseonCreate()
anull
en lugar deBundle
, 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 marcadorFLAG_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 archivobuild.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
Opciones adicionales para la IU de una actividad. Debe ser uno de los siguientes valores.
Valor Descripció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, salvo para
noHistory
ywindowSoftInputMode
, que se agregaron en el nivel de API 3. - consulta también:
<application>
<activity-alias>
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2024-08-22 (UTC)
[null,null,["Última actualización: 2024-08-22 (UTC)"],[],[]]