onCreate siempre se llama si se navega hacia atrás con intención

Tengo una actividad llamada HomeActivity que tiene un SurfaceView y muestra una imagen de vista previa de la cámara. Esta actividad es bastante pesada y se siente lenta si la está iniciando / reiniciando.

Así que hice algunas investigaciones 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.

losdocumentación dice: Llamado cuando la actividad se crea por primera vez. Aquí es donde debe hacer toda su configuración estática normal: crear vistas, vincular datos a listas, etc. Este método también le proporciona un Bundle que contiene el estado previamente congelado de la actividad, si lo hubiera. Siempre seguido por onStart ().

Aquí está el método, que maneja volver:

protected void gotoHome() {
    final Intent intent = new Intent(SomeOtherActivity.this, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

Editar:

Así es como me voy de HomeActivity ... nada especial:

final Intent i = new Intent(HomeActivity.this, SomeOtherActivity.class);
startActivity(i);

Respuestas a la pregunta(1)

Su respuesta a la pregunta