2010-05-26 13 views
9

Tengo actividades A y B. La A es la que tiene el filtro de intención LAUNCHER (es decir, la actividad que se inicia cuando hacemos clic en el ícono de la aplicación en la pantalla de inicio).Android: ¿Cómo hacer que el iniciador siempre abra la actividad principal en lugar de la actividad infantil? (o de lo contrario)

A inicia B utilizando startActivity(new Intent(A.this, B.class)).

Cuando el usuario tiene la actividad abierta B, y luego poner mi solicitud a un segundo plano, y más tarde el proceso de mi aplicación se mató, cuando el usuario inicia mi solicitud de nuevo, B se abre en lugar de A.

Este causó un cierre forzado en mi aplicación, porque A es la actividad que inicializa los recursos que mi aplicación necesita, y cuando B intentó acceder a los recursos no inicializados, B se bloquea.

¿Tiene alguna sugerencia sobre qué debería hacer en esta situación?

Respuesta

10

Bueno, realmente debería tener actividad B para inicializar sus recursos también. Pero puede poner android:clearTaskOnLaunch="true" en su manifiesto para la actividad A para que el iniciador siempre vaya a esa actividad.

+0

Parece que no siempre hago el trabajo. Terminé de lanzar mis otras actividades con: intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY); – Warpzit

0

¿Ha intentado establecer Flag FLAG_ACTIVITY_NEW_TASK mientras crea intenciones? En su caso, intente startActivity(new Intent(A.this, B.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))

+0

Lo sentimos, pero sería tan amable de explicar a qué se refiere con A.this, B.class? ¿Cuál sería la sintaxis real? B se expresa normalmente como "com.mipackage.FOO" (o como lo llamé en el manifiesto), y A? Ni siquiera estoy seguro de lo que quieres decir con A. Intenté ... nuevo Intento (esto, "com.mipackage.FOO" .getClass(). SetFlags ... pero obviamente eso no funcionó (solo estaba intentando por el bien de diligencia debida). –

+0

A. Esto se refiere a esto en su extracto. B.Clase se refiere a la clase que desea invocar. getclass() devolverá la clase de tiempo de ejecución de un objeto, en este caso creo que lo haré devuelve la clase base. – Vamsi

Cuestiones relacionadas