Red de conocimiento informático - Computadora portátil - Cómo pasar tareas al primer plano en Android

Cómo pasar tareas al primer plano en Android

Si su plataforma está orientada a Android 3.0 (API nivel 11), felicidades, puede utilizar la siguiente función:

moveTaskToFront

/reference/android/ app/ ActivityManager.html# moveTaskToFront(int, int)

Si eres como yo y tienes problemas en la plataforma 2.2, es un poco complicado, básicamente taskAffinity FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_SINGLE_TOP.

Primero , veamos qué dice el SDK:

1. Afinidad de tareas:

El SDK señala que si una actividad se inicia usando el indicador FLAG_ACTIVITY_NEW_TASK, una actividad tiene la misma afinidad. nombre como otra tarea actualmente en ejecución (A), entonces la actividad se iniciará con el mismo nombre de afinidad que otra tarea actualmente en ejecución (A).

Bien, entonces se iniciará la actividad en esta tarea (A).

Bueno, eso no es suficiente, no dijeron que pusiéramos la tarea_A en primer plano, así que veamos otra bandera

2. FLAG_ACTIVITY_NEW_TASK

Ok, aquí viene el punto importante: si ya hay una Actividad_2 en la tarea_A, y si usas FLAG_ACTIVITY_NEW_TASKACTIVITY_NEW_TASK para iniciar la Actividad_2, entonces esta tarea_A pasará al primer plano.

Bien, ahora la tarea A está lista para ingresar al primer plano y queda el último paso: Activity_2 no se puede crear dos veces, lo que requiere que se usen las siguientes banderas al mismo tiempo:

3. FLAG_ACTIVITY_SINGLE_TOP

Si la Actividad_2 está en la parte superior de la tarea, entonces esta Actividad_2 pasará al primer plano.

En este punto, combinado con las tres funciones anteriores, el problema se resuelve fácilmente. Combinado con el código, el proceso es el siguiente:

Agregue Activity_2 taskAffinity en 1.xml con el mismo nombre que Task_A (es decir, el mismo nombre que Activity_1 taskAffinity), como android: taskAffinity = " TaskAffinity", android: taskAffinity = "TaskAffinity", android: taskAffinity = "TaskAffinity", android: taskAffinity = "TaskAffinity". taskAffinity = "android.task.calendar".

2.

2. Antes de que se inicie task_B, Activity_1 inicia Activity_2 y solicita el resultado, startActivityForResult().

3. Activity_4 en task_B obtiene los datos requeridos y los guarda (intención u otro método), luego inicia Activity(Activity_2) y usa el indicador (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP). ARRIBA) marca.

4. Traiga Task_A al primer plano y llame a Activity_2::onNewIntent().

5.Activity_2 obtiene la información previamente guardada (del Intent o de otro lugar), llama a setResult() y luego completa().

6. Responda a onActivityResult() en Activity_1 para obtener el resultado devuelto. 7.