¿La actividad de Stashed significa que el objeto de actividad no existe?

introduzca la descripción de la imagen aquí

Estaba mirando esta página de "Programación de Android" por gran rancho nerd, y me sentí confundido por la frase debajo. Indica que "cuando la actividad es escondida, un objeto de la actividad no existe." Esto es confuso para mí porque cuando abro una aplicación y presiono el botón de inicio, se llama onPause () y la actividad alcanza un estado "Pausado" con su actividad escondida en el sistema operativo, como se muestra en la figura. Debe seguir ejecutándose en segundo plano porque onDestroy () no se llama cuando presiono el botón de inicio. De hecho, cuando abro mi administrador de tareas, puedo ver cómo se veía la actividad cuando presioné el botón Inicio. ¿Qué significa exactamente "objeto de actividad no existe?" cuando está claramente en estado de pausa en el fondo?

Su documentación parece estar un poco equivocada y confusa. La documentación oficial de Android no habla de un estado "escondido", sería el bloque "proceso de aplicación eliminado" en la documentación aquí

Básicamente, desde el estado STOPPED solamente, el sistema operativo puede destruir su actividad en cualquier momento. Si hace esto, se llamará onSaveInstanceState. La variable Activity sería inválida. En cualquier momento, puede recrear una nueva Actividad y llamar a Create, luego onRestoreInstanceState, pasando en el Bundle que guardó previamente, para recrear la actividad.

Esto es confuso para mí porque cuando abro una aplicación y presiono el botón de inicio, se llama onPause () y la actividad alcanza un estado "Pausado" con su actividad escondida en el sistema operativo, como se muestra en la figura.

Yo no diría que esto es "escondido". Su actividad está viva y bien, simplemente se detuvo.

Debe seguir ejecutándose en segundo plano porque onDestroy () no se llama cuando presiono el botón de inicio.

Está bien. Cuando estás pulsando el botón de inicio, estás diciendo al sistema operativo: "Oye, voy a otro sitio, pero no necesariamente lo hago con esta actividad".

Si en su lugar pulsa el botón Atrás, verá onDestroy llamado. Aquí estás diciendo al OS "Ok, he terminado con esta actividad, haz con ella lo que quieras."

¿Qué significa exactamente "objeto de actividad no existe?" cuando está claramente en estado de pausa en el fondo?

El estado de almacenamiento se introduce cuando el sistema operativo necesita para destruir su actividad sin que usted "diciendo" que lo haga (es decir, golpeando el botón Atrás). Esto sucede cuando el dispositivo pasa por un cambio de configuración del dispositivo. Un ejemplo clásico es la rotación. Esto también sucede si el sistema operativo necesita liberar memoria. En este caso, onSaveInstanceState será llamado para capturar el estado de su actividad en un Bundle . El estado de stashed es entonces la preservación de este Bundle y el nombre de la clase de su actividad. El objeto Actividad real está marcado para la recolección de elementos no utilizados. A continuación, dado sólo el objeto Bundle y el nombre de clase de su actividad, el sistema operativo puede crear una nueva instancia de su actividad si el usuario vuelve a ella.

Uno de ellos es que usted no tiene que implementar onSaveInstanceState menos que haya información específica que desea conservar. Algunos componentes de la jerarquía de vistas agregarán automáticamente información sobre ellos mismos al Bundle porque se seguirá llamando a la Activity.onSaveInstanceState super Activity.onSaveInstanceState . De los documentos:

La implementación por defecto se encarga de la mayor parte del estado de UI por instancia para usted llamando a onSaveInstanceState () en cada vista de la jerarquía que tiene un id y guardando el id de la vista actualmente enfocada (todo lo cual es restaurado por el implementación por defecto de onRestoreInstanceState (Bundle)). Si reemplaza este método para guardar información adicional no capturada por cada vista individual, es probable que desee llamar a través de la implementación predeterminada. De lo contrario, esté preparado para guardar todo el estado de cada vista.

http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

Puedes consultar la fuente aquí: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/app/Activity.java#1371

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.