Incluso después de eliminar manualmente el Int Después de haber sido analizados, parece que Activity.getIntent() siempre devolverá el Intento original que inició la Actividad.
Para evitar esto, recomiendo algo como esto:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The Intent provided by getIntent() (and its extras) will persist through a restore
// via savedInstance. Because of this, restoring this activity from a
// an instance that was originally started with extras (deep-link or
// pre-defined destination) may cause un-desired behavior
// (ie...infinite loop of sending the user directly to somewhere else because of a
// pre-defined alternate destination in the Intent's extras).
//
// To get around this, if restoring from savedInstanceState, we explicitly
// set a new Intent *** to override the original Intent that started the activity.***
// Note...it is still possible to re-use the original Intent values...simply
// set them in the savedInstanceState Bundle in onSavedInstanceState.
if (savedInstanceState != null) {
// Place savedInstanceState Bundle as the Intent "extras"
setIntent(new Intent().putExtras(savedInstanceState));
}
processIntent(getIntent())
}
private void processIntent(Intent intent) {
if (getIntent().getExtras() == null) {
// Protection condition
return;
}
doSomething(intent.getExtras.getString("SOMETHING_I_REALLY_NEED_TO_PERSIST"));
final String somethingIDontWantToPersist =
intent.getExtras.getString("SOMETHING_I_DONT_WANT_TO_PERSIST");
if(somethingIDontWantToPersist != null) {
doSomething(somethingIDontWantToPersist);
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save selective extras from original Intent...
savedInstanceState.putString("SOMETHING_I_REALLY_NEED_TO_PERSIST", "persistedValued");
super.onSaveInstanceState(savedInstanceState);
}
De esta manera, existe un mecanismo para volcar la intención original al tiempo que conserva la capacidad de retener de forma explícita ciertas partes del original Intención/Intención extras.
Tenga en cuenta que no he probado todos los modos de inicio de actividad.
pixel no debería aceptar la respuesta claramente incorrecta y aceptar @ dcg en su lugar. Eso me habría ahorrado aproximadamente una hora de trabajo yendo por el camino equivocado. Consulte la publicación de Dianne Hackborn sobre cómo setIntent es una mentira: https://groups.google.com/forum/#!msg/android-developers/vrLdM5mKeoY/ThkOonAbtloJ – JohnnyLambada
Vea si esto ayuda - stackoverflow.com/a/19820057/313042 – rajath