Melhorar a latência da inicialização

A latência de inicialização é uma métrica importante para reter o número de usuários ativos por dia e garantir uma experiência perfeita desde a primeira interação. Isso vale principalmente para ambientes com pouca memória RAM, em que as compensações de performance podem ser consideradas. No entanto, antes de começar a fazer melhorias no app, é importante entender todos os aspectos que contribuem para a inicialização.

Práticas recomendadas

Enviar com um perfil de referência

Os perfis de referência melhoram a velocidade de execução do código em cerca de 30% desde a primeira inicialização, evitando a interpretação e as etapas de compilação just-in-time (JIT) para caminhos de código incluídos. Ao enviar um perfil de referência em um app, o Android Runtime (ART) pode otimizar os caminhos de código incluídos pela compilação antecipada (AOT, na sigla em inglês), fornecendo melhorias de desempenho a cada novo usuário e a cada atualização do app.

Evitar a inicialização de tudo ao mesmo tempo

Evite realizar tarefas que não são necessárias na sequência de inicialização do app. O cenário mais provável para o app iniciar um processo é na própria inicialização. No entanto, o WorkManager, o JobScheduler, o BroadcastReceiver, os serviços vinculados e a biblioteca de inicialização do AndroidX também podem iniciar processos em segundo plano. Se possível, evite inicializar de forma desnecessária tudo que está na classe Application. Muitas bibliotecas oferecem inicialização sob demanda, o que permite invocá-las apenas quando necessário.

Mover tarefas da linha de execução de interface para a linha de execução em segundo plano

Se algumas tarefas estiverem demorando muito e bloqueando a linha de execução principal, mova-as para uma linha de execução em segundo plano ou use o WorkManager para garantir maior eficiência. Identifique operações que demoram longos períodos ou consomem mais tempo do que o esperado. A otimização dessas tarefas pode ajudar a melhorar de forma significativa a latência de inicialização.

Analisar e corrigir contenções de leitura de disco graves

O StrictMode é uma ferramenta para desenvolvedores que pode ajudar a detectar o uso acidental de acesso ao disco ou à rede na linha de execução principal do app, onde as operações da interface são recebidas e as animações são reproduzidas. Quando a ferramenta detecta uma possível área de melhoria, você pode encerrar o app de forma automática ou registrar a violação para uma futura inspeção.

Evitar IPCs síncronas

Muitas vezes, pausas longas na execução do app são causadas por chamadas do binder, o mecanismo de comunicação entre processos (IPC) do Android. Em versões recentes do Android, esse é um dos motivos mais comuns para a linha de execução de interface parar de ser executada. Geralmente, a correção visa evitar chamadas de funções que fazem chamadas de binder. Se for inevitável, coloque o valor em cache ou mova o trabalho para linhas de execução em segundo plano. Para mais informações, consulte Atrasos na programação de linhas de execução.