Android: el inicio de la aplicación de 'aplicaciones recientes' comienza con el último conjunto de extras utilizados en una intención

Un poco de un problema confuso para mí aquí:

Tengo un widget de pantalla de inicio que, al hacer clic, inicia mi actividad principal de la aplicación con unos cuantos extras puestos en la intención:

Intent start = new Intent(context, Main.class); start.putExtra("action", "showXYZ"); start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(start); 

Todo esto funciona bien, comienza mi actividad y mi actividad recibe los extras como se esperaba. Procesa estos extras y comienza otra actividad.

Una vez que un usuario ha hecho clic en el widget de pantalla de inicio y comenzó la actividad principal de esta manera, entrar en la aplicación a través del método de "Aplicaciones recientes" (manteniendo presionada la tecla "inicio") inicia la actividad principal con los extras – Que no quiero (y que conduce a la segunda actividad para abrir, en lugar de que la actividad principal sólo se muestra).

¿Hay algún trabajo alrededor para esto? Al iniciar la aplicación desde el método de "aplicaciones recientes", sólo quiero iniciar la actividad principal sin el último conjunto de extras.

Muchas gracias por la ayuda! R3mo

Nota: Estoy en android 1.5

EDITAR:

Encontrar una solución aquí: Android mantiene el almacenamiento en caché de mis intenciones Extras, ¿cómo declarar una intención pendiente que mantiene extras fresco?

Voy a timestamp la intención que es fijada por el widget, y comprobar que la marca de tiempo es reciente en Main.java. Si lo es, procederé con el procesamiento. Si no, sólo mostraré la actividad Main.java.

Quisiera saber si hay alguna solución oficial a esto.

    Como dice Martijn, puede comprobar si su aplicación se abre utilizando un intento con el conjunto flag FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY , como esto:

     int flags = getActivity().getIntent().getFlags(); if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) { // The activity was launched from history } 

    Creo que se puede distinguir un arranque "normal" de un arranque de "aplicaciones recientes" comprobando los indicadores de Intent; Hay una bandera llamada

    Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

    Que, según la documentación:

    This flag is not normally set by application code, but set for you by the system if this activity is being launched from history (longpress home key).

    Por lo tanto, cuando este indicador está establecido, puede optar por ignorar los extras.

    Debe eliminar los extras de su intención después de usarlos.

     Bundle extras = getIntent().getExtras(); if (extras == null) { return; } String value1 = extras.getString("Value1"); String value2 = extras.getString("Value2"); extras.clear(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.