studio quitar programacion móviles finalizar desarrollo curso completamente como cerrar aplicación aplicaciones aplicacion actionbar android view activity-lifecycle

quitar - manual de programacion android pdf



Método para anular cuando el diseño se destruye en Android (3)

Es peligroso confiar en la "destrucción" de un diseño para ejecutar sentencias, ya que no estás directamente en control de eso cuando eso sucede. La forma aceptada y la buena práctica es usar el ciclo de vida de la actividad para eso.

Pero si realmente desea vincular su componente a ese ciclo de vida , le sugiero que su componente implemente una interfaz (algo así como Removable ), y haga algo así en su clase básica de actividad (que extiendan todas sus actividades):

protected Set<Removable> myRemovableItems = new HashSet<Removable>(); @Override public void onPause() { super.onPause(); for (Removable removable : myRemovableItems) { removable.remove(); } }

La interfaz:

public interface Removable { void remove(); }

Luego, cada vez que agrega uno de sus componentes personalizados de una actividad, agrega el componente al conjunto interno de Removable de la actividad, y su método de remove se invocará automáticamente cada vez que se pause la actividad.

Eso le permitiría especificar qué hacer cuando se llama a onPause dentro del componente en sí. Pero no aseguraría que se llame automáticamente , para eso tendrás que hacerlo en la actividad.

Nota: puede usar onStop lugar de onPause dependiendo de cuándo desea que se onPause la eliminación.

Tengo un componente personalizado que extiende LinearLayout, necesito ejecutar ciertas declaraciones cuando se destruye o elimina Layout. (o a punto de ser eliminado)

Una forma es verificar onPause () o onDestroy () de una actividad y llamar a los métodos del componente personalizado. Pero quiero eliminar esa sobrecarga de la actividad. De modo que el componente personalizado en sí mismo puede manejar cuando se desacopla el diseño. Pero no encuentro el método adecuado para anular (para detectar el evento) cuando se elimina el diseño. ¿Hay alguna manera de manejar esto, o tenemos que usar el método de actividad onPause () y onResume ()?


Puede hacer que su vista personalizada escuche sus propios eventos. Sugiero usar View.OnAttachStateChangeListener y escuchar el evento onDetach.

@Override void onViewDetachedFromWindow(View v) { doCleanup(); }


Tuve éxito anulando los onAttachedToWindow() y onDetachedFromWindow() :

@Override protected void onAttachedToWindow() { super.onAttachedToWindow(); // View is now attached } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); // View is now detached, and about to be destroyed }