He leído varias publicaciones sobre cómo usar esto, pero me falta algo, ya que no funciona para mí. Mi actividad A tiene launchmode = "singleTop" en el manifiesto. Inicia la actividad B, con launchmode = "singleInstance". La actividad B abre un navegador y recibe e intenta regresar, razón por la cual es SingleInstance. Estoy tratando de anular el botón Atrás para que el usuario vuelva a la actividad A, y luego presione Atrás para salir de la actividad, en lugar de regresar a la actividad B nuevamente.¿Cómo se usa Intent.FLAG_ACTIVITY_CLEAR_TOP para borrar la pila de actividades?
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}
Después de volver del navegador, la pila es ... A, B, navegador, B
espero que este código para cambiar la pila para ... Un ... así que presionar una vez más lleva al usuario a la pantalla de inicio.
En su lugar, parece cambiar la pila a ... A, B, navegador, B, A ... como si esas banderas no estuvieran allí.
Intenté llamar a finish() en la actividad B después de iniciar la actividad, pero luego el botón Atrás me lleva de vuelta al navegador.
¿Qué me estoy perdiendo? ¡Gracias!
En realidad ... 'Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP' hará solo eso. –
Verifique la solución de Steel_fedex para su ejemplo. – Darpan