¿Cuál es el punto de ViewStub cuando también puedo inflar perezosamente una vista sin ella?

Después de leer los documentos, no estoy seguro de lo que ViewStub lograr que no puedo con la creación de un XML con una vista y luego inflarlo en tiempo de ejecución.

El Doc dice usar ViewStub para inflar vistas en tiempo de ejecución. No estoy seguro de por qué esto es útil, aparte de la sintaxis es un poco más fácil.

¿O estoy totalmente equivocado sobre esto?

El uso básico de ViewStub es para actuar como un "marcador de posición" a un elemento que no será necesario en un momento posterior sin tener carga adicional de rendimiento inicial. Ahora, su pregunta ¿por qué no sólo inflar dinámicamente entonces?

Sirven para ambos propósitos lo mismo, sólo que al usar ViewStub , se separa y ya define la totalidad de su interfaz de usuario en un XML separado, por lo que es una separación de las preocupaciones. Ahora si tienes una interfaz de usuario dinámica, entonces sería mejor ir inflando programaticamente tu interfaz de usuario.

Así que en general,

  • UI definida: prefiere ViewStub

  • interfaz de usuario dinámica: prefieren aumentar las Views programática

En cuanto a mi experiencia, lo he utilizado para un proyecto que he tenido que mantener y necesario para superar una jerarquía compleja de Views , que tomó demasiado tiempo para cargar. ViewStub ayudó en la carga perezosa de una interfaz de usuario definida, mejorando la puesta en marcha de la interfaz de usuario.

Digamos que usted tiene un pedazo de la pantalla que se supone que es una de las 3 diferentes interfaces de usuario, pero no sabrá que hasta el tiempo de ejecución. Puede usar un ViewStub e inflar el correcto en tiempo de ejecución. Y porque el ViewStub está allí, no forzará un relayout de su pantalla, ya que ya reservó espacio para él. Sí, esto suena un poco como un fragmento, pero esto existía antes de fragmentos, y su peso más ligero que codificar un fragmento. También puede usarse de forma recursiva de una manera que los fragmentos tendrían un tiempo difícil, por ejemplo, una estructura basada en un árbol podría tener una ViewStub que podría inflarse para nodos que no son hojas, pero como lo es para los nodos de hoja.

No es algo que debe utilizar con frecuencia, pero sí tiene algunos usos.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.