«GONE» выглядит вредным для производительности?

Я создаю приложение, в котором он может сэкономить мне некоторое время, чтобы иметь один макет для нескольких видов деятельности, причем некоторые из представлений установлены в GONE в зависимости от того, какая активность используется.

Я знаю, что наличие большого количества просмотров в макете может привести к низкой производительности. Если бы у меня была активность с большим количеством просмотров, но большая часть этих представлений должна была GONE, будет ли эта деятельность работать плохо. То есть, представления, настроенные на GONE, способствуют ухудшению производительности? Если да, требуют ли они меньше вычислительной мощности, чем VISIBLE или INVISIBLE?

Благодаря!

Solutions Collecting From Web of "«GONE» выглядит вредным для производительности?"

Первое, что вы должны знать об ушедшем против невидимого:

  • View.GONE Это представление невидимо, и для макета не требуется свободного места.
  • View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для макета.

Вы на правильном пути, думая о влиянии на измерение. Какой из них более эффективен, все зависит от того, как часто вы меняете видимость вида.

Например, если вид не отображается в течение большей части времени, что делает его GONE, вероятно, более эффективным, потому что система не будет бесполезно измерять и отображать ваше невидимое представление всякий раз, когда ему нужно настроить другие представления на экране.

С другой стороны, если просмотр часто меняется между видимым и невидимым, вы можете получить более высокую производительность от INVISIBLE, так как вы потенциально можете избежать дополнительной меры / макета для каждого перехода.

Вот интересный ответ . Мне было интересно то же, что и вы, и ответ заключается в том, что View.GONE потребляет больше памяти, чем просто вызывает removeView(view) в представлении. Однако представления GONE потребляют меньше памяти, чем View.VISIBLE поскольку их не нужно рисовать.

Суммы памяти сравниваются следующим образом:

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

Я использую View.GONE для представлений, которые не потребляют много памяти (например, TextView) и используют parent.removeView(view) для представлений, которые являются большой памятью (например, WebView);