Intereting Posts
Сохранять открытое / закрытое состояние клавиатуры для EditText, когда приложение выходит на передний план VideoView с файлами cookie (или заголовками) Как определить, сколько текста будет вписываться в TextView в Android? Использовать LoaderManager для подробного просмотра или нет? Android эмулятор висит при запуске? Как получить значение шага, выбранное в android-comboseekbar-master Dalvik / CleanSpec.mk: 47: *** отсутствует разделитель. Стоп. Ошибка создания AOSP Настроить adb на Mac OS X Как определить уровень сигнала, когда GSM возвращает «99»? Не удалось связаться с Google Datastore с Android-приложением в Android Studio Изображение с масштабированием по горизонтали с помощью переопределения не изменяет размер изображения Как обеспечить, чтобы AlarmManager срабатывал, даже если приложение Android закрыто? Как создать триггер между обычной таблицей и таблицей fts3? Запрос сопряжения Bluetooth на панели уведомлений? Как изменить расстояние в 1 метр на пиксель?

Android: вложенность FrameLayouts – какова высокая накладная производительность?

Чтобы внедрить чистую архитектуру с отдельными и многократно используемыми компонентами пользовательского интерфейса, мне нужно иметь иерархии вложенных FrameLayouts (до 3-4 вложенных FrameLayouts ), все из которых имеют как layout_width и layout_height установленные в match_parent (общая идея этой архитектуры Описан в этом ответе ).

Я пришел к удивлению, есть ли заметные служебные издержки, связанные с этой практикой вложения FrameLayouts . Чтобы сделать вопрос менее абстрактным, давайте обсудим его в контексте двух конкретных иерархий: «статическая» иерархия (ничего не движется по экрану) и «прокручиваемая» иерархия (пользователь может прокручивать экран).

«Статическая» иерархия:

Введите описание изображения здесь

Как только отображается экран, содержащий эту иерархию, ничего больше не меняется.

«Прокручиваемая» иерархия:

Введите описание изображения здесь

После того, как эта иерархия отображается на экране, пользователь может прокрутить внутренний ListView , что требует перерисовки самых внутренних RelativeLayouts .

Я вообще не беспокоюсь о «статической» иерархии – накладные расходы вложенных FrameLayouts в этом случае выплачиваются один раз и не будут влиять на производительность макета каким-либо заметным образом.

  • Q1: Правильно ли это допущение, или есть некоторые сценарии снижения производительности, с которыми я могу столкнуться?

Как насчет «прокручиваемого» макета? Интересно, влияет ли тот факт, что внутренний ListView упакован в несколько FrameLayouts влияет на его производительность прокрутки …

  • Q2: Внешние FrameLayouts влияют на вложенную производительность прокрутки ListView ?
  • Q3: Если ответ на Q2 «да», каковы же накладные расходы в «прокручиваемом» случае?