vida studio programacion para libro edición desarrollo desarrollar ciclo aprende aplicaciones activity android android-lifecycle

studio - Android: onDestroy() o método similar en la clase de aplicación



manual de programacion android pdf (5)

En Android, no existe el concepto de cerrar una aplicación. El usuario simplemente se va: este es el único evento del que tendrá conocimiento ( onPause() en una actividad). Debe adaptar el diseño de su aplicación para que se ajuste a este ciclo de vida.

No debe tratar de encontrar una solución, sino que puede empeorar las cosas: ¿qué sucede si el usuario se queda sin batería o si su aplicación falla? todos los datos se perderán No sé con qué tipo de datos está trabajando, pero esto generalmente da como resultado una calificación baja en Google Play. Incluso si algo malo sucede, todos los datos ya deberían haberse guardado ( AsyncTasks son geniales para esto, no tengas miedo de iniciar uno en cada cambio para guardar datos constantemente).

Estoy ampliando la clase de aplicación para trabajar con algunas variables globales que necesitan contexto. Sé que hay un método onCreate () en la clase Application que se llama antes que cualquier otro onCreate () en las actividades, pero me gustaría saber si hay onDestroy () o un método similar en la clase Application que se pueda anular para que yo ¿Sería capaz de almacenar variables en la memoria persistente, anular el registro del oyente y enviar el último mensaje al servidor antes de que se mate el proceso de la aplicación? Si no, ¿hay alguna otra forma de hacer eso?


No hay tal devolución de llamada en un dispositivo de producción para la clase de Aplicación.

Las cosas que desea hacer generalmente se deben hacer inmediatamente después de realizar los cambios, o en el modo onPause() del componente respectivo de la aplicación.


Otra opción que tienes es anular onDestroy () en la primera pantalla de tu aplicación, por lo que se llamará justo antes de que se mate tu proceso.


Primero que nada: soy un principiante absoluto

Necesito ejecutar algún código cuando sale mi aplicación (sí, no sé tal cosa en Android) y esto funciona bien para mí:

-Tengo MyApplication que extiende la aplicación. Como miembro de MyApplication, hay un campo AtomicInteger llamado activeActivitiesNumber y un método public getter.

-Todas las actividades de aplicación extienden MyActivy (que a su vez excede la Actividad)

-MyActivity anula los métodos de creación, onResume y onStop y también tiene un campo protegido: MyPaption protegido mAppState;

a) OnCreate(){ super.onCreate(); mAppState=this.getApplication();...} b) onResume(){ super.OnResume(); myAppState.getactiveActivitiesNumber().addAndGet(1) ....} c) onStop(){ super.onStop() if (myAppStatemyAppState.getactiveActivitiesNumber()..decrementAndGet()<1){ ...call exiting code (for instance a public method defined in MyApplication} }

Tiene un problema: si comienza cualquier actividad que no pertenezca a su aplicación (por ejemplo, envíe un correo electrónico) activará el método de salida.

Otro problema (no sé si es uno real o teórico) es que no hay garantía de que en algunas situaciones se llame a bronce.

Espero que esto ayude.


Puede anular onDestroy() en la Activity que será la última cerrada en su aplicación y verificar si está finalizando. En este caso, su código no se invocará en una rotación de dispositivo. Pero debe tener en cuenta que onDestroy() no se invoca cuando se cierra una aplicación a través del botón de inicio del dispositivo.

@Override public void onDestroy(){ super.onDestroy(); if(isFinishing()){ //do your stuff here } }