2011-07-26 13 views
5

Mi MainActivity tiene la lauchMode="singleTask"cómo forzar la actividad de reinicio de la intención

Ahora quiero iniciar la actividad desde una notificación con los datos de intención especiales. en MainActivity.onResume puedo acceder a los datos de intención dados ...

El problema es: Cuando la actividad ya existe, y haga clic en la notificación, la actividad viene a primer plano, pero el método no está onResume llamado y no puedo acceder los datos de intención.

Probé la bandera FLAG_ACTIVITY_CLEAR_TASK y esto funciona para Honeycomb pero no para Gingerbread.

Esta es la forma de empezar la actividad de una notificación:

Intent intent = new Intent(); 
intent.setClass(this, MainActivity.class); 
intent.putExtra("triggerid", triggerid); 
startActivity(intent); 

Respuesta

9

onResume() siempre se llama si la actividad no se encuentra en el primer plano. Sin embargo, lo que probablemente vea es que getIntent() devuelve la intención que inició la actividad, no la intención que se le envió más recientemente.

Para solucionar esto, debe omitir onNewIntent(). Esto recibirá el nuevo intento enviado a él. Luego puede llamar al setIntent() con la intención recibida, lo que causará que getIntent() devuelva el nuevo intento cuando se usa en onResume().

Cuestiones relacionadas