vida savedinstancestate finish developers created ciclo activity android ondestroy

android - savedinstancestate - ¿Qué es exactamente lo que destruye onDestroy()?



onrestoreinstancestate (2)

Aunque no solo tienes la Actividad. También tiene la aplicación y su proceso ejecutándose en una máquina virtual Dalvik. Por lo general, Android dejará la aplicación ejecutándose en segundo plano hasta que necesite recuperar la memoria que está utilizando para alguna otra aplicación. Su miembro estático debe permanecer en la memoria mientras el proceso se esté ejecutando. Si intenta ejecutar alguna aplicación con uso intensivo de memoria o cerrar forzadamente la aplicación en ejecución con algún administrador de tareas, puede ver el restablecimiento del valor estático.

Me han molestado estas "características": cuando uso el botón Atrás para salir de mi aplicación, puedo decir que se llama aDestroy (), pero la próxima vez que ejecute mi aplicación, todos los miembros estáticos de la clase de Actividad aún conservarán su valores. Vea el código a continuación:

public class HelloAndroid extends Activity { private static int mValue; // a static member here public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText((mValue != 0) ? ("Left-over value = " + mValue) : "This is a new instance"); setContentView(tv); } public void onDestroy() { super.onDestroy(); mValue++; }

}

El código anterior muestra el valor restante en mValue, y se incrementa cuando finaliza la sesión, de modo que estoy seguro de que se llama a onDestroy ().

Encontré una respuesta útil en este foro, y entiendo que en el código anterior, mValue es un miembro de la clase, en lugar de un miembro de la instancia. Pero, ¿no es cierto que, en este caso en particular, solo tengo una sola actividad de HelloAndroid, y entonces, cuando él muere, todo se limpia y la próxima vez que regrese, todo vuelve a empezar? (O, ¿hay alguna otra cosa misteriosa en el sistema que aún se mantenga después de onDestroy () para que simplemente no muera?)

(Lo anterior es solo una variable, ¿y si es un conjunto de referencias de objetos? Cada pieza es una memoria recolectable por separado. ¿Existe la posibilidad de que GC recopile algunas de ellas pero no todas o ninguna? Esto realmente me molesta. )


El sistema operativo decide cuando las cosas "desaparecen". onDestroy está ahí para permitir que tu aplicación tenga una última oportunidad de limpiar las cosas antes de que la actividad se destruya, pero eso no significa que la actividad, de hecho, se realizará por separado. Aquí hay un buen artículo que recomiendo que lea la gente que se relaciona con crear un botón de salida. Si bien no es exactamente lo que preguntaste, los conceptos te ayudarán a entender qué está pasando.