Quando o Compose atualiza um frame, ele passa por três fases:
- Composição:o Compose determina o que mostrar. Ele executa funções combináveis e cria a árvore de interface.
- Layout:o Compose determina o tamanho e a posição de cada elemento na árvore da interface.
- Exibição:o Compose renderiza os elementos da interface individuais.
O Compose pode ignorar essas fases de maneira inteligente se elas não forem necessárias. Por exemplo, suponha que um único elemento gráfico alterne entre dois ícones do mesmo tamanho. Como esse elemento não muda de tamanho e nenhum elemento da árvore da interface é adicionado ou removido, o Compose pode pular as fases de composição e layout e reexibir esse único elemento.
No entanto, erros de programação podem dificultar que o Compose saiba quais fases ele pode ignorar com segurança. Nesse caso, o Compose executa todas as três fases, o que pode diminuir a velocidade da sua interface. Portanto, muitas das práticas recomendadas de performance ajudam o Compose a ignorar as fases desnecessárias.
Para mais informações, consulte o guia Fases do Jetpack Compose.
Princípios gerais
Há alguns princípios gerais a serem seguidos que podem melhorar a performance em geral:
- Sempre que possível, remova os cálculos das funções combináveis. As funções combináveis podem precisar ser executadas novamente sempre que a interface mudar. Qualquer código que você inserir no elemento combinável será executado novamente, possivelmente para cada frame de uma animação. Limite o código do elemento combinável apenas ao que ele precisa para criar a interface.
- Adie as leituras de estado pelo maior tempo possível. Ao mover a leitura do estado para um elemento combinável filho ou para uma fase posterior, é possível minimizar a recomposição ou pular a fase de composição completamente. Você pode fazer isso transmitindo funções lambda em vez do valor do estado quando ele muda com frequência e priorizando modificadores baseados em lambdas ao transmitir esse estado com mudanças frequentes. Confira um exemplo dessa técnica na seção Adiar leituras pelo maior tempo possível de Seguir práticas recomendadas.
Outros recursos
- Guia de desempenho do app:descubra as práticas recomendadas, bibliotecas e ferramentas para melhorar o desempenho no Android.
- Inspecionar desempenho:inspecione o desempenho do app.
- Comparativo de mercado:compare o desempenho do app.
- Inicialização do app:otimize a inicialização do app.
- Perfis de referência:entenda os perfis de referência.