Quando você tiver uma visualização bem projetada que responde a gestos e transições entre estados, verifique se ela é executada rapidamente. Para evitar uma interface lenta ou oscilando durante a reprodução, confira se as animações são executadas de forma consistente a 60 quadros por segundo.
Acelere a visualização
Para acelerar sua visualização, elimine código desnecessário de rotinas chamadas com frequência. Comece
com
onDraw()
,
que oferece o maior retorno. Especificamente, elimine alocações em onDraw()
,
porque elas podem levar a uma coleta de lixo que causa um travamento. Aloque objetos
durante a inicialização ou entre animações. Nunca faça uma alocação enquanto uma animação estiver
em execução.
Além de tornar o onDraw()
mais enxuto, ele precisa ser chamado com a menor frequência
possível. A maioria das chamadas para onDraw()
é o resultado de uma chamada para
invalidate()
. Portanto, elimine
chamadas desnecessárias para invalidate()
.
Outra operação muito cara é transferir layouts. Quando uma visualização chama
requestLayout()
, o
sistema de interface do Android passa por toda a hierarquia de visualização para descobrir o tamanho que cada visualização precisa ter. Se encontrar medidas conflitantes, ele poderá passar pela hierarquia várias vezes. Às vezes, os designers de IU
criam hierarquias profundas de objetos
ViewGroup
aninhados. Essas hierarquias de visualização
profundas causam problemas de performance. Portanto, use essas hierarquias o mais superficiais possível.
Se você tem uma interface complexa, escreva um ViewGroup
personalizado para executar o layout.
Ao contrário das visualizações integradas, a visualização personalizada pode fazer suposições específicas do aplicativo sobre o tamanho
e a forma dos filhos e, portanto, evitar passar pelos filhos para calcular medidas.
Por exemplo, se você tiver um ViwGroup
personalizado que não ajusta o próprio tamanho para caber
em todas as visualizações filhas, evitará a sobrecarga da medição de todas as visualizações filhas. Essa otimização
não será possível se você usar os layouts integrados que atendem a uma ampla variedade de casos de uso.