A Turo reduziu o tempo de inicialização do aplicativo em 77% usando ferramentas e práticas recomendadas para desenvolvedores Android
Turo é o maior mercado de compartilhamento de carros do mundo, onde os hóspedes podem reservar qualquer carro que quiserem e onde quiserem, a partir de uma vibrante comunidade de anfitriões confiáveis.
Os desenvolvedores da Turo recentemente investiram pesadamente na melhoria do desempenho inicial de seu aplicativo Android. O tempo de inicialização é a primeira impressão que os usuários têm de um aplicativo, e tempos de carregamento mais lentos podem afetar negativamente a retenção e o engajamento do usuário. A equipe queria oferecer aos usuários uma experiência mais rápida e simplificada toda vez que lançassem o aplicativo. E usando as melhores ferramentas, recursos e práticas do Android, eles conseguiram reduzir o tempo de inicialização do aplicativo em 77%.
Preparando o cenário com a biblioteca App Startup
A inicialização do aplicativo inclui todo o processo de inicialização de um aplicativo e todo o código que ele executa antes de renderizar seu primeiro quadro de IU. Para Turo, isso significava que os usuários tinham que esperar que o aplicativo executasse sua inicialização inicial, solicitações de rede síncronas e uma animação inicial personalizada - tudo antes de verem a tela inicial do aplicativo.
Os desenvolvedores de Turo sabiam que, para melhorar os tempos de carregamento do aplicativo, eles precisariam condensar e remover muitos desses incômodos eventos de inicialização. Para ajudar a reduzir esses eventos, os engenheiros da Turo usaram a biblioteca App Startup do Android .
A biblioteca App Startup deu aos desenvolvedores da Turo uma maneira simples e simplificada de inicializar vários componentes durante a inicialização do aplicativo. Também permitiu que eles selecionassem quais componentes inicializar e em que ordem, permitindo que eles melhorassem significativamente os tempos de carregamento. Ter a biblioteca App Startup instalada define a base para o restante da otimização de inicialização do Turo.
Adiando solicitações de rede e cortando a tela inicial
Antes da otimização, o aplicativo executava várias solicitações de rede sequencialmente e exibia uma animação inicial personalizada de um segundo antes que os usuários pudessem acessar a tela inicial do aplicativo. Isso resultava em um processo de inicialização lento, especialmente se o usuário tivesse uma conectividade de rede ruim.
A remoção da animação inicial foi uma maneira fácil para os desenvolvedores do Turo melhorarem o tempo de carregamento percebido. E ao tornar as solicitações de rede paralelas e assíncronas, os usuários podem acessar a tela inicial com muito mais rapidez. “Inicialmente, usamos um SplashActivity dedicado para executar todo o trabalho de inicialização antes de direcionar o aplicativo para o HomeActivity. No entanto, as diretrizes mais recentes desaconselham essa abordagem. Portanto, eliminamos o SplashActivity redundante e transferimos toda a lógica de inicialização para nossa atividade raiz, aproveitando a Splash Screen API”, disse Pavlo Stavytskyi, engenheiro de software sênior da Turo.
Ao mesmo tempo, o aplicativo também realizava várias outras solicitações de rede de inicialização para adaptar a experiência a usuários individuais, resultando em experiências de usuário inconsistentes. “Se o aplicativo for usado por um convidado, algumas solicitações de rede ajudam a decidir qual tela deve ser mostrado após a tela inicial”, disse Pavlo. “Por padrão, é a tela inicial. No entanto, existem casos especiais em que o usuário pode ser redirecionado diretamente para uma reserva de veículo ativa ou para uma tela de feedback.”
A equipe não queria desacelerar a inicialização de cada aplicativo verificando esses cenários de nicho. Em vez disso, o Turo agora sempre abre a tela inicial por padrão enquanto faz solicitações de rede de forma assíncrona. Se um redirecionamento for necessário, a tela apropriada será exibida na parte superior da tela inicial.
Aplicando perfis de linha de base
A equipe do Turo também aplicou Perfis de linha de base para melhorar o desempenho do aplicativo. Os perfis de linha de base ajudam a pré-compilar os caminhos do código de inicialização com antecedência, aumentando o tempo de inicialização do aplicativo Turo em mais 15%, de acordo com os testes da Macrobenchmark. “Depois que removemos todas as solicitações de rede síncronas, nossa duração de inicialização tornou-se mais determinística e fez mais sentido aplicar perfis de linha de base”, disse Pavlo.
As melhorias de desempenho podem levar a uma melhor retenção de usuários, aumento de transações e melhores avaliações. Os perfis de linha de base são uma maneira rápida e confiável de mover a agulha em grande quantidade.
Priorizando o desempenho da inicialização
Existem muitos fatores que podem afetar o tempo de inicialização de um aplicativo. Cabe aos desenvolvedores identificar onde, quando e como podem melhorar seu aplicativo para garantir que ele seja otimizado para a melhor experiência do usuário.
“É importante começar a melhoria com tarefas que exijam menos esforço e produzam os maiores resultados”, disse Pavlo. “Em muitos casos, a engenharia enfrenta um conflito entre alocar tempo e recursos no trabalho do produto ou na otimização do desempenho. No entanto, tratar o desempenho como um recurso de produto independente é inevitável para seu sucesso.”
Otimize seu aplicativo hoje
Melhore o tempo de inicialização do seu aplicativo com as práticas recomendadas do Android para otimização de aplicativos , Inicialização de aplicativos do Android e Perfis de linha de base .
Você também pode ler a história completa de como a Turo melhorou a eficiência de inicialização de seu aplicativo usando as ferramentas e práticas recomendadas para desenvolvedores do Android.