Android: Diálogo: debo ocultar o dimiss

Estoy jugando con Dialog para crear algunas vistas rápidas en mi aplicación (como login, ingrese el nombre, etc)

Y estoy vagando lo que es mejor: ocultar o despedir.

Sé lo que ambos hacen pero sigo vagando si es mejor ocultar un diálogo y mostrarlo de nuevo cuando lo necesito o despedirlo y recrearlo.

Mis diálogos son pequeños y están acutally estáticos en mi código, por lo que no tengo toneladas de instancias.

Así que alguien puede darme los pros y los contras de usar ocultar más de despedir.

Jason

Depende de cuántas veces su necesidad, y si es caro para crearlo. Si no es demasiado costoso para crearlo, personalmente prefiero descartarlo, para tener un "ambiente más limpio". Pero si no estás usando cientos de diálogos, no creo que esto realmente importe.

Usar hide() podría causar un error de Leaked Window .

Si elige hide() y sale de su aplicación usando finish() , esto causará un mensaje de error (visto aquí ) sobre una ventana que se filtró.

Por lo tanto, bien dismiss() sus diálogos correctamente antes de llamar a finish() o simplemente usar dismiss() lugar de hide() .

Sé que es un post muy antiguo pero no he encontrado ninguna de las respuestas por encima de lo suficientemente bueno, por lo que en la forma más sencilla de explicar:

  • hide() sólo cambiará el estado de visibilidad del diálogo, pero el objeto permanecerá allí y se podrá volver a show() utilizando el método show() .
  • dismiss() oculta y también destruye el diálogo. Para volver a mostrar el diálogo, primero debe volver a crearlo.

Entonces si necesita mostrar y ocultar un diálogo muchas veces mejor para hide() . Eventualmente lo dismiss() en onDestroy() para evitar el error de fuga en la ventana.

Espero que sea útil para referencias de funciones.

Supongo que por 'estático' significa que el contenido no es dinámico, no que tiene objetos estáticos en su código. En ese caso, probablemente sea mejor descartar el diálogo y permitir que la VM recuerde cualquier memoria asignada para él. Los recursos necesarios para crear un diálogo son triviales, pero mantener la memoria cuando no es muy frecuente es una buena manera de pasar hambre el sistema de memoria.

Considere que su aplicación puede ser una de media docena de aplicaciones en ejecución. Si todos ellos mantuvieron sus objetos "baratos" ocultos en lugar de despedirlos muy pronto algo va a ser forzado a cerrar por la VM para recuperar la memoria.

Al mismo tiempo estamos hablando de un diálogo que no es exactamente un objeto grande. Me gustaría ofrecer el comportamiento estándar sería despedirlo a menos que pueda crear un argumento convincente por qué es más barato ocultarlo para ahorrar recursos en la recreación (por ejemplo, si está mostrando con mucha frecuencia este diálogo).

  • Android AlertDialog setOnDismissListener para API inferior a 17
  • Predeterminado Focus y Teclado a EditText en Android AlertDialog
  • Cuadro de diálogo o formulario donde el usuario puede elegir para introducir detalles o cancelar
  • Android - Cómo descartar todos los cuadros de diálogo en onPause
  • Cambiar el contenido de un cuadro de diálogo de Android después de la creación
  • Cómo quitar el marco rectangular del cuadro de diálogo personalizado
  • ¿Cómo mantener CustomDialog cuando su actividad está terminada?
  • Cómo configurar el fondo transparente como un cuadro de diálogo personalizado en android
  • Android Prevent Bluetooth Dialing Dialog
  • Android no dimensiona el cuadro de diálogo personalizado suficientemente grande
  • Diálogo sin bordes de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.