Tengo una actividad llamada HomeActivity que tiene un SurfaceView y muestra una imagen de vista previa de la cámara. Esta actividad es muy pesada y se siente lenta si la comienzas/reinicias.onCreate siempre se llama si navega hacia atrás con intención
Así que investigué y descubrí que de alguna manera siempre se llama al método onCreate. En mi opinión, esto no debería suceder si la Actividad ya se ha iniciado.
documentation dice: Se invoca cuando se crea la actividad por primera vez. Aquí es donde debes hacer toda tu configuración estática normal: crear vistas, vincular datos a listas, etc. Este método también te proporciona un paquete que contiene el estado previamente congelado de la actividad, si es que existía. Siempre seguido de onStart().
Aquí es el método, que se encarga de volver:
protected void gotoHome() {
final Intent intent = new Intent(SomeOtherActivity.this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
Editar:
aquí es cómo estoy dejando HomeActivity ... nada especial:
final Intent i = new Intent(HomeActivity.this, SomeOtherActivity.class);
startActivity(i);
Asegúrate de no terminar() HomeActivity cuando empieces otra actividad desde él. – Egor
onCreat() llama cuando regresa con el método 'gotoHome()'? –
@Egor No llamo finish() – Mark