Quiero hacer algo de limpieza en una vista cuando se destruye la actividad. ¿Hay alguna forma de obtener una devolución de llamada en la Vista cuando se destruye la actividad? Intenté usar onDetachedFromWindow
, pero no estoy seguro de si es lo correcto.Cómo detectar si la actividad padre de la vista se está destruyendo
Respuesta
Entendiendo que no se garantiza que se llame a onDestroy, puede hacer una devolución de llamada a su vista en las actividades del método Destroy.
Editar en respuesta al comentario: Puede obtener cualquier vista dándole un id en el diseño y llamando a findViewById. He aquí un ejemplo:
layout.xml (sólo mostrando el mínimo)
<LinearLayout>
<com.example.superwidget.DropDownTouchEnabledListView
android:id="@+id/special_list_view" />
</LinearLayout>
MyActivity.java (de nuevo, desnudos importaciones mínimas adecuadas y asumiendo)
@Override
void onDestroy() {
DownTouchEnabledListView v = (DownTouchEnabledListView)findViewById(R.id.special_list_view);
v.doCallback(with, parameters);
}
Si desea obtener una devolución de llamada sin tener que sobrecargar el método View.onDetachedFromWindow()
, puede usar el método View.addOnAttachStateChangeListener()
, que toma una escucha de devolución de llamada como un parámetro único.
solo para API> 12 –
- 1. ¿Se está destruyendo la actividad porque cambió la orientación o porque la aplicación se está cerrando?
- 2. Detectar si el padre html está oculto
- 3. ¿Cómo detectar si Vista UAC está habilitado?
- 4. ¿Cómo detectar si regresó de la actividad infantil?
- 5. ¿Cómo puedo detectar si IE8 se está ejecutando en la vista de compatibilidad?
- 6. Descubriendo si la actividad de Android se está ejecutando
- 7. Comprobar si la actividad está activa
- 8. Cómo obtener la vista padre desde la vista parcial
- 9. Cómo detectar si se toca la imagen
- 10. Cómo detectar si un micrófono está presente
- 11. Detectar si el dispositivo se está cargando
- 12. Android: ¿cómo detectar la ubicación táctil en ImageView si la vista de la imagen está escalada por matriz?
- 13. jQuery webcam/flash: ¿Cómo detectar si la webcam está activa?
- 14. ¿Cómo obtener la vista de contenido de la actividad?
- 15. Cómo detectar si el iphone está sincronizado cuando la aplicación no se está ejecutando
- 16. cómo detectar si el modo de acción ya está presente
- 17. ¿Cómo puedo comprobar si la vista de desplazamiento está rebotando?
- 18. Cómo detectar si Windows se está cerrando o reiniciando
- 19. iPhone: ¿Cómo detectar si iTunes está jugando?
- 20. OSX: ¿Cómo detectar si se está ejecutando Mission Control?
- 21. ¿Cómo puedo detectar si Dispatcher.DisableProcessing está activo?
- 22. ¿Cómo se prueba si las vistas de Backbone.js se están desencadenando() y destruyendo() correctamente?
- 23. ¿Detectando si se está reproduciendo la música?
- 24. Cómo detectar si numpy está instalado
- 25. Cómo comprobar si mi actividad es la actividad actual que se ejecuta en la pantalla
- 26. ¿La forma correcta de detectar si está instalado SQLCMD.exe?
- 27. ¿Cómo puedo detectar cuándo se está redireccionando la salida?
- 28. ¿Cómo detectar si UISwitch está encendido/apagado?
- 29. Cómo anular la animación de la actividad de entrada si está indicado por el iniciador
- 30. Android AsyncTasks Cómo verificar Si la actividad aún se está ejecutando
Puede elaborar un poco sobre esto. Mi clase de vista personalizada es parte de un paquete separado y esta vista se define en el diseño xml. Por lo tanto, invocar algo a la vista desde la clase de actividad no es factible. – bhups
"Por lo tanto, no es posible invocar algo a la vista desde la clase de actividad". Claro que lo es. Llamar a 'findViewById()', obtener el widget, convertirlo a la clase apropiada y llamar a un método en él. Dicho esto, 'onDetachedFromWindow()' me parece una opción razonable. – CommonsWare
@CommonsWare usted comenta más rápido de lo que puedo editar. :) Por cierto, gracias por todo el trabajo que haces. Sus libros/código/respuestas han sido invaluables para mí. –