¿Por qué onDestroy siempre se llama cuando regresa a la actividad de los padres?

Tengo una aplicación muy simple basada en el tutorial Building Your First App . Hay dos actividades: MainActivity invoca DisplayMessageActivity través de startActivity() .

Al entrar en DisplayMessageActivity , veo:

 MainActivity.onStop() 

Como se esperaba, pero cuando MainActivity el botón Atrás para volver a la principal MainActivity , obtengo:

 MainActivity.onDestroy() MainActivity.onCreate(null) MainActivity.onStart() 

La actividad siempre se destruye para esta aplicación muy simple. Pero de acuerdo con la documentación (segundo punto), el comportamiento típico es que la actividad sea detenida y reiniciada en tales casos.

Además, onDestroy() no ocurre cuando se inicia la actividad de los niños, pero sólo una vez se hace clic en el botón de retroceso.

Dos preguntas:

  1. ¿Existe alguna manera de evitar que los padres sean destruidos en el caso común?
  2. ¿Por qué se pasa null a onCreate() aquí? Esto me impide preservar el estado a través de onSaveInstanceState() .

Ten en cuenta que he comprobado que la opción Configuración -> Opciones de desarrollador -> Aplicaciones -> No mantener actividades está desactivada.

Editar:

A continuación, se muestra cómo la actividad del niño está vinculada al padre:

  <activity android:name="com.example.helloworld.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.helloworld.MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.helloworld.MainActivity" /> </activity> 

Rastreando a través de DisplayMessageActivity.onOptionsItemSelected() , puedo ver que está llamando a Activity.onNavigateUp() .

Gracias a los comentarios de Greg Giacovelli, encontré la respuesta aquí . La solución era establecer android:launchMode="singleTop" .

¡Todavía no puedo entender porqué tal información básica es tan desconocida y difícil de encontrar!

  • OnCreate () llamado mientras se detiene la actividad (pero no se destruye). Sólo después de la instalación
  • ¿Cómo puedo guardar la pila trasera de la aplicación en un lote?
  • Establecer un oyente personalizado para escuchar en toda la aplicación
  • Fragmento ciclo de vida: cuando "ondestroy" y "ondestroyview" no son llamados?
  • ¿Es onResume () llamado antes onActivityResult ()?
  • Cancelar notificación después de que la aplicación se cierre desde el fondo
  • ¿Android almacena variables estáticas?
  • LocalBroadcastManager y el ciclo de vida de la actividad
  • ¿Cuándo puedo primero medir una vista?
  • ¿Cómo saber cuándo se ha matado mi aplicación?
  • Los miembros de la clase en Fragmento se convierten en nulos después de pulsar el botón Inicio y esperar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.