studio developer constraint cardview android layout android-view

constraint - relative layout android developer



¿Las vistas "GONE" son perjudiciales para el rendimiento? (2)

Estoy creando una aplicación en la que podría ahorrar algo de tiempo tener un diseño único para varias actividades, con algunas de las vistas establecidas en GONE dependiendo de qué actividad se esté utilizando.

Sé que tener una gran cantidad de vistas en un diseño puede provocar un rendimiento deficiente. Si tuviera una actividad con una gran cantidad de vistas, pero una gran parte de esas vistas se DESAPARECERÍA, esta actividad aún funcionaría mal. Es decir, ¿las vistas configuradas en GONE contribuyen a empeorar el rendimiento? En caso afirmativo, ¿exigen menos potencia de procesamiento que las vistas VISIBLE o INVISIBLE?

¡Gracias!


Lo primero que debe saber sobre ido vs invisible:

  • View.GONE Esta vista es invisible y no ocupa espacio para fines de diseño.
  • View.INVISIBLE Esta vista es invisible, pero aún ocupa espacio para propósitos de diseño.

Pensando en el impacto en la medición. Cuál es más eficiente depende de la frecuencia con la que esté cambiando la visibilidad de la vista.

Por ejemplo, si la vista no está visible la mayor parte del tiempo, hacerlo GONE probablemente sea más eficiente, ya que el sistema no mediría innecesariamente y desplegaría su vista invisible cada vez que necesita ajustar otras vistas en la pantalla.

Por otro lado, si la vista cambia entre visible e invisible con frecuencia, puede obtener un mejor rendimiento de INVISIBLE ya que podría evitar una medida / diseño adicional en cada transición.


Aquí hay una respuesta interesante . Me preguntaba lo mismo que usted, y la respuesta es que View.GONE consume más memoria que simplemente llamar a removeView(view) en la vista. Sin embargo, las vistas GONE consumen menos memoria que View.VISIBLE ya que no es necesario View.VISIBLE .

Las cantidades de memoria se comparan así:

View.VISIBLE > View.GONE > removing the view from the container

Lo que hago es usar View.GONE en vistas que no consumen mucha memoria (como un TextView) y uso parent.removeView(view) en vistas que son mucha memoria (como una WebView);