Red de conocimiento informático - Computadora portátil - ¿Por qué está configurado Intent.FLAG en la programación de Android?

¿Por qué está configurado Intent.FLAG en la programación de Android?

Las banderas son algunas banderas de uso común y diferentes banderas tienen diferentes usos. Por ejemplo:

FLAG_ACTIVITY_BROUGHT_TO_FRONT

Este indicador generalmente no se establece mediante el código del programa. Por ejemplo, el sistema lo configura automáticamente cuando configura el modo singleTask en launchMode.

FLAG_ACTIVITY_CLEAR_TOP

Si está configurado y esta Actividad ya se está ejecutando en la Tarea actual, por lo tanto, en lugar de reiniciar una instancia de esta Actividad, todas las instancias por encima de esta Actividad La Actividad se cerrará , y luego el Intent se entregará como un nuevo Intent a la Actividad anterior (ahora en la parte superior). Por ejemplo, supongamos que una Tarea contiene estas actividades: A, B, C, D. Si D llama a startActivity() y contiene un Intent que apunta a la Actividad B, entonces tanto C como D finalizarán y luego B recibirá el Intent. Por lo tanto, el estado de la pila actual es: A, B. La Actividad B en ejecución en el ejemplo anterior puede recibir este nuevo Intent en onNewIntent() o puede cerrarse y luego reiniciarse para recibir este Intent. Si su modo de inicio se declara como "múltiple" (el valor predeterminado) y no configura el indicador FLAG_ACTIVITY_SINGLE_TOP en este Intent, entonces se cerrará y se volverá a crear para otros modos de inicio, o el indicador FLAG_ACTIVITY_SINGLE_TOP se configurará en; este Intent, ambos Este Intent se entregarán a onNewIntent() de la instancia actual. Este modo de inicio también se puede usar junto con FLAG_ACTIVITY_NEW_TASK: se usa para iniciar la Actividad raíz en una Tarea, pondrá en primer plano cualquier instancia en ejecución en esa Tarea y luego la borrará hasta la Actividad raíz. Esto es útil, por ejemplo, al iniciar una actividad desde el Administrador de notificaciones.

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

Si se establece, esto establecerá un punto de restauración en la pila de actividad de la tarea y, cuando se restaure la tarea, será necesario limpiar la actividad. Es decir, la próxima vez que una Tarea entre en primer plano con el flag FLAG_ACTIVITY_RESET_TASK_IF_NEEDED (la operación típica es que el usuario la reinicie en la pantalla de inicio), esta Actividad y las que están encima de ella se cerrarán, para que el usuario pueda ya no volverá a ellos, pero podrá volver a la Actividad anterior. Esto es útil cuando su programa tiene puntos de división. Por ejemplo, una aplicación de correo electrónico puede tener una operación para ver un archivo adjunto, lo que requiere iniciar una actividad de exploración de imágenes para mostrarlo. Esta Actividad debe ser parte de la Tarea de la aplicación de correo electrónico porque esta es la acción desencadenada por el usuario en esta Tarea. Sin embargo, cuando el usuario abandona esta tarea y luego selecciona la aplicación de correo electrónico en la pantalla de inicio, es posible que queramos volver a ver la sesión, pero no la imagen adjunta, ya que esto resulta confuso. Al configurar esta bandera al iniciar la exploración de imágenes, la navegación y otras actividades iniciadas se borrarán la próxima vez que el usuario regrese al programa de correo.

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

Si se establece, las nuevas actividades no se guardarán en la lista de actividades lanzadas recientemente.

FLAG_ACTIVITY_FORWARD_RESULT

Si se establece y este Intent se utiliza para iniciar una nueva Actividad a partir de una Actividad existente, entonces la Actividad que es el objetivo de la respuesta se pasará al nuevo centro de Actividad. . De esta manera, la nueva Actividad puede llamar a setResult(int) y el valor del resultado se enviará a la Actividad que es el objetivo de la respuesta.

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

Este indicador generalmente no se establece mediante el código de la aplicación. Si la actividad se inicia desde el historial (presione la tecla INICIO con frecuencia), el sistema lo configurará por usted.

FLAG_ACTIVITY_MULTIPLE_TASK

No utilice este indicador a menos que implemente el iniciador de aplicaciones usted mismo. Usado junto con FLAG_ACTIVITY_NEW_TASK, puede deshabilitar el comportamiento de enviar tareas existentes al primer plano. Cuando se establece, siempre se inicia una nueva Tarea para manejar la Intención, independientemente de si ya existe una Tarea que maneja lo mismo. Dado que el sistema predeterminado no incluye capacidades gráficas de administración de tareas, no debe usar esta marca a menos que proporcione al usuario una forma de regresar a una tarea ya iniciada. Si el indicador FLAG_ACTIVITY_NEW_TASK no está configurado, este indicador se ignora.

FLAG_ACTIVITY_NEW_TASK

Si se establece, esta Actividad se convertirá en el comienzo de una nueva Tarea en la pila histórica. Una Tarea (desde la Actividad que la inició hasta la Actividad en la siguiente Tarea) define un grupo atómico de Actividades que el usuario puede migrar. Las tareas se pueden mover al primer plano y al fondo; todas las actividades dentro de una tarea en particular siempre permanecen en el mismo orden. Este flag se utiliza generalmente para presentar comportamientos de tipo "inicio": proporcionan al usuario una serie de cosas que puede hacer de forma independiente, completamente independientes de la Actividad que los inició. Usando esta bandera, si la tarea de la actividad que se está iniciando ya se está ejecutando, la nueva actividad no se iniciará, la tarea actual simplemente se moverá al primer plano; Este comportamiento se puede desactivar consultando el indicador FLAG_ACTIVITY_MULTIPLE_TASK. La persona que llama no puede utilizar este indicador para solicitar resultados para una actividad ya iniciada.

FLAG_ACTIVITY_NO_ANIMATION

Si se establece en el Intent y se pasa a Context.startActivity(), este indicador evitará que el sistema aplique la animación de migración de actividad al ingresar a la siguiente actividad. Esto no significa que la animación nunca se ejecutará; si otra actividad no especifica este indicador antes de iniciar la visualización, se aplicará la animación. Esta bandera se puede utilizar bien para realizar una secuencia de operaciones, y se considera que las animaciones están impulsadas por eventos de nivel superior.

FLAG_ACTIVITY_NO_HISTORY

Si se establece, la nueva actividad ya no se conservará en la pila del historial. Tan pronto como el usuario la abandona, la Actividad se cierra. Esto también se puede hacer configurando el atributo noHistory.

FLAG_ACTIVITY_NO_USER_ACTION

Si se establece, cuando una Actividad recién iniciada ingresa al primer plano, esta bandera evitará la devolución de llamada onUserLeaveHint() desde la Actividad más frontal antes de que se detenga la Actividad. Normalmente, una Actividad puede confiar en esta devolución de llamada para indicar que una acción explícita del usuario provocó que la Actividad saliera del fondo.

Esta devolución de llamada marca un punto apropiado en el ciclo de vida de la Actividad y cierra algunas Notificaciones. Si una Actividad se inicia a través de un evento no controlado por el usuario, como una llamada entrante o un despertador, este indicador también debe pasarse a Context.startActivity para garantizar que la Actividad pausada no crea que el usuario está al tanto de su Notificación. .

FLAG_ACTIVITY_REORDER_TO_FRONT

Si se establece en el Intent y se pasa a Context.startActivity(), este indicador hará que la actividad que ya se está ejecutando se mueva a la parte superior de la pila del historial. Por ejemplo, supongamos que una tarea consta de cuatro actividades: A, B, C y D. Si D llama a startActivity() para iniciar la Actividad B, entonces B se moverá a la parte superior de la pila del historial y el orden actual será A, C, D, B. Si también se establece el indicador FLAG_ACTIVITY_CLEAR_TOP, este indicador se ignorará.

FLAG_ACTIVITY_SINGLE_TOP

Si se establece, cuando esta actividad se ejecuta en la parte superior de la pila histórica, no se iniciará una nueva.