todas solo restaurar recientes quitar porque para las iconos gratis forzar eliminar detienen detencion desactivar como cierre celular cambiar boton app aplicaciones activa android android-activity android-intent extras

solo - Android: al iniciar la aplicación desde ''aplicaciones recientes'' se inicia con el último conjunto de extras utilizados en un intento



restaurar forzar detencion (3)

Debe borrar 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();

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

Tengo un widget de pantalla de inicio que, cuando hace clic, inicia la Actividad principal de mi aplicación con algunos extras 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 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 la pantalla de inicio y ha iniciado la actividad Principal de esta manera, al acceder a la aplicación a través del método "Aplicaciones recientes" (manteniendo presionada la tecla "inicio") se inicia la actividad Principal con los extras, lo que provoca el procesamiento que no quiero (y que conduce a la apertura de la segunda actividad, en lugar de solo mostrar la actividad Principal).

¿Hay algún problema para esto? Al iniciar la aplicación desde el método de "aplicaciones recientes", simplemente quiero iniciar la actividad Principal sin el último conjunto de extras.

Muchas gracias por la ayuda! r3mo

Nota: estoy en Android 1.5

EDITAR:

Encontré una solución alternativa aquí: Android guarda en caché mis intenciones Extras, ¿cómo declarar un intento pendiente que mantiene nuevos extras?

Voy a marcar la fecha y hora de la intención del widget, y verificar que la marca de tiempo sea reciente en Main.java. Si es así, procederé con el procesamiento. Si no, mostraré la actividad Main.java.

Ansioso por saber si hay alguna solución oficial para esto.


Creo que se puede distinguir una puesta en marcha "normal" de una puesta en marcha de "aplicaciones recientes" al marcar las banderas de Intención; 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).

Entonces, cuando se establece esta bandera, puede optar por ignorar los extras.


Como dice Martijn, puedes verificar si tu aplicación se abre usando un Intento con la bandera FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY establecida, como esta:

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