Составление фаз и производительность,Составление фаз и производительность,Составление фаз и производительность,Составление фаз и производительность

Когда Compose обновляет кадр, он проходит три этапа:

  • Композиция: Композиция определяет, что показывать. Он запускает компонуемые функции и строит дерево пользовательского интерфейса.
  • Макет: Compose определяет размер и расположение каждого элемента в дереве пользовательского интерфейса.
  • Рисование: Compose фактически отображает отдельные элементы пользовательского интерфейса.

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

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

Для получения дополнительной информации см. руководство по этапам составления Jetpack .

Общие принципы

Есть несколько общих принципов, которым следует следовать, которые могут улучшить производительность в целом:

  • По возможности выносите вычисления из составных функций. Компонуемые функции, возможно, придется перезапускать при каждом изменении пользовательского интерфейса. Любой код, который вы помещаете в составной элемент, выполняется повторно, возможно, для каждого кадра анимации. Ограничьте код составного элемента только тем, что необходимо для создания пользовательского интерфейса.
  • Отложите чтение состояния как можно дольше. Перемещая чтение состояния на дочернюю составную фазу или на более позднюю фазу, вы можете свести к минимуму рекомпозицию или полностью пропустить фазу композиции. Вы можете сделать это, передавая лямбда-функции вместо значения состояния для часто меняющегося состояния и отдавая предпочтение модификаторам на основе лямбда-выражений при передаче часто меняющегося состояния. Вы можете увидеть пример этой техники в разделе «Отложить чтение как можно дольше» статьи «Следуйте лучшим практикам» .

Дополнительные ресурсы

,

Когда Compose обновляет кадр, он проходит три этапа:

  • Композиция: Композиция определяет, что показывать. Он запускает компонуемые функции и строит дерево пользовательского интерфейса.
  • Макет: Compose определяет размер и расположение каждого элемента в дереве пользовательского интерфейса.
  • Рисование: Compose фактически отображает отдельные элементы пользовательского интерфейса.

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

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

Для получения дополнительной информации см. руководство по этапам составления Jetpack .

Общие принципы

Есть несколько общих принципов, которым следует следовать, которые могут улучшить производительность в целом:

  • По возможности выносите вычисления из составных функций. Компонуемые функции, возможно, придется перезапускать при каждом изменении пользовательского интерфейса. Любой код, который вы помещаете в составной элемент, выполняется повторно, возможно, для каждого кадра анимации. Ограничьте код составного элемента только тем, что необходимо для создания пользовательского интерфейса.
  • Отложите чтение состояния как можно дольше. Перемещая чтение состояния на дочернюю составную фазу или на более позднюю фазу, вы можете свести к минимуму рекомпозицию или полностью пропустить фазу композиции. Вы можете сделать это, передавая лямбда-функции вместо значения состояния для часто меняющегося состояния и отдавая предпочтение модификаторам на основе лямбда-выражений при передаче часто меняющегося состояния. Вы можете увидеть пример этой техники в разделе «Откладывать чтение как можно дольше» статьи «Следуйте лучшим практикам» .

Дополнительные ресурсы

,

Когда Compose обновляет кадр, он проходит три этапа:

  • Композиция: Композиция определяет, что показывать. Он запускает компонуемые функции и строит дерево пользовательского интерфейса.
  • Макет: Compose определяет размер и расположение каждого элемента в дереве пользовательского интерфейса.
  • Рисование: Compose фактически отображает отдельные элементы пользовательского интерфейса.

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

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

Для получения дополнительной информации см. руководство по этапам составления Jetpack .

Общие принципы

Есть несколько общих принципов, которые помогут улучшить производительность в целом:

  • По возможности выносите вычисления из составных функций. Компонуемые функции, возможно, придется перезапускать при каждом изменении пользовательского интерфейса. Любой код, который вы помещаете в составной элемент, выполняется повторно, возможно, для каждого кадра анимации. Ограничьте код составного элемента только тем, что необходимо для создания пользовательского интерфейса.
  • Отложите чтение состояния как можно дольше. Перемещая чтение состояния на дочернюю составную фазу или на более позднюю фазу, вы можете свести к минимуму рекомпозицию или полностью пропустить фазу композиции. Вы можете сделать это, передавая лямбда-функции вместо значения состояния для часто меняющегося состояния и отдавая предпочтение модификаторам на основе лямбда-выражений при передаче часто меняющегося состояния. Вы можете увидеть пример этой техники в разделе «Откладывать чтение как можно дольше» статьи «Следуйте лучшим практикам» .

Дополнительные ресурсы

,

Когда Compose обновляет кадр, он проходит три этапа:

  • Композиция: Композиция определяет, что показывать. Он запускает компонуемые функции и строит дерево пользовательского интерфейса.
  • Макет: Compose определяет размер и расположение каждого элемента в дереве пользовательского интерфейса.
  • Рисование: Compose фактически отображает отдельные элементы пользовательского интерфейса.

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

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

Для получения дополнительной информации см. руководство по этапам составления Jetpack .

Общие принципы

Есть несколько общих принципов, которым следует следовать, которые могут улучшить производительность в целом:

  • По возможности выносите вычисления из составных функций. Компонуемые функции, возможно, потребуется перезапускать при каждом изменении пользовательского интерфейса. Любой код, который вы помещаете в составной элемент, выполняется повторно, возможно, для каждого кадра анимации. Ограничьте код составного элемента только тем, что необходимо для создания пользовательского интерфейса.
  • Отложите чтение состояния как можно дольше. Перемещая чтение состояния на дочернюю составную фазу или на более позднюю фазу, вы можете свести к минимуму рекомпозицию или полностью пропустить фазу композиции. Вы можете сделать это, передавая лямбда-функции вместо значения состояния для часто меняющегося состояния и отдавая предпочтение модификаторам на основе лямбда-выражений при передаче часто меняющегося состояния. Вы можете увидеть пример этой техники в разделе «Отложить чтение как можно дольше» статьи «Следуйте лучшим практикам» .

Дополнительные ресурсы