Principiante de Android: onDestroy

¿Debo colocar los comandos antes o después de super.onDestroy () al sobrescribir la actividad de una actividad?

protected void onDestroy() { //option 1: callback before or ... super.onDestroy(); //option 2: callback after super.onDestroy(); } 

(Ahora me temo: si super.onDestroy es demasiado rápido, nunca llegará en la opción 2.)

Esto es lo que sucede cuando llamas a super.onDestroy ();

Fuente de Android

 protected void onDestroy() { mCalled = true; // dismiss any dialogs we are managing. if (mManagedDialogs != null) { final int numDialogs = mManagedDialogs.size(); for (int i = 0; i < numDialogs; i++) { final Dialog dialog = mManagedDialogs.valueAt(i); if (dialog.isShowing()) { dialog.dismiss(); } } } // also dismiss search dialog if showing // TODO more generic than just this manager SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchManager.stopSearch(); // close any cursors we are managing. int numCursors = mManagedCursors.size(); for (int i = 0; i < numCursors; i++) { ManagedCursor c = mManagedCursors.get(i); if (c != null) { c.mCursor.close(); } } } 

Esencialmente esto significa que no importa si usted lo llama antes o después de su código.

Cualquier cosa que pueda estar relacionada con el uso de los recursos de la actividad debe ser antes de la llamada a super.onDestroy() . El código después de que se b alcanzado, pero podría causar problemas si necesita esos recursos.

Coloque su código después de la super.onDestroy(); p.ej:

 protected void onDestroy() { super.onDestroy(); // Put code here. } 

Su código terminará de ejecutarse al sobreescribir el método.

Llamar a super.onDestroy no interrumpirá el subproceso de llamada o algo así. Su código se ejecutará sin importar dónde lo coloque, antes o después de super.onDestroy.

Super.onDestroy solo liberará recursos que puedan ser referenciados para esta actividad por framework (como diálogos del sistema y cursores administrados)

Te sugiero que consultes este enlace para más detalles

http://developer.android.com/reference/android/app/Activity.html#onDestroy ()

Depende. Si desea que las acciones sean aplicadas después de la función super , debe colocar su función después de la super. Supongo que tienes que entender el uso de super primero. Por ejemplo, eche un vistazo a esta pregunta

Llegará en la opción 2. onDestroy () no destruye realmente el objeto. Su instancia sigue viva después de ejecutar y devolver la onDestroy () de la superclase.

Edit: esto es lo que onDestroy hace en orden:

  • Descartar todos los diálogos que la actividad estaba administrando.
  • Cierre todos los cursores que la actividad estaba administrando.
  • Cerrar cualquier diálogo de búsqueda abierto
  • ¿Cómo tratar los datos retenidos después de que la actividad llegue a primer plano cuando se utiliza más de una actividad?
  • Cómo "destruir" varias actividades de Android al mismo tiempo
  • Android: detención de actividad que no se reanuda
  • Acceso a la clase de aplicación en Broadcast Receiver
  • ¿Por qué se definen los métodos del ciclo de vida en la clase de actividad con el especificador de acceso protegido
  • La aplicación se reinicia en lugar de continuar
  • Android: Aplicación onCreate llamada cada vez que la aplicación va al fondo
  • Variables estáticas públicas y gestión del ciclo de vida de la actividad de Android
  • NullPointerException en Fragment Listener
  • ¿Cuándo se llaman onSaveInstanceState () y onRestoreInstanceState (), exactamente?
  • NsdManager no detiene el descubrimiento de servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.