Estoy creando una notificación para la bandeja de notificaciones. Estoy especificando un clic intención de esta manera:¡No se puede eliminar el intento adicional!
claseIntent intent = new Intent(context, MyActivity.class);
intent.putExtra("foo", true);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setData(Uri.parse("" + System.currentTimeMillis()));
El MyActivity se puso en marcha muy bien con el "foo" parámetro actual. Sin embargo, no puede deshacerse de ese extra después - que parece persistir en el intento:
// MyActivity
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// please go away..
intent.removeExtra("foo");
getIntent().removeExtra("foo");
}
iterar sobre las claves de la intención demuestra que "foo" ya no existe. Pero si hago un seguimiento de la actividad y la vuelvo a poner en primer plano, el parámetro "foo" vuelve a estar presente.
¿Alguien sabe cómo deshacerse de él? También intenté llamar a setIntent(), el mismo comportamiento. Es como si el lanzador mantuviera el intento original y lo sigue reutilizando.
Gracias
Este es uno de los casos tontos con Java y punteros. Es posible que deba intentar finalizar el intento original después de copiarlo sin foo. – hwrdprkns
Ah, ¿cómo se puede finalizar el intento original? ¿Haría algo como call finish() de onNewIntent() y simplemente volvería a iniciar la actividad? Supongo que el usuario no vería el salto furtivo, y me desharía de ese "foo" extra. ¡Creo que podría funcionar! – user291701
'Intent.finalize()'? – hwrdprkns