Firma Turo skróciła czas uruchamiania aplikacji o 77% dzięki narzędziom dla programistów Androida i najlepszym praktykom
Turo to największy na świecie rynek współdzielenia samochodów, na którym goście mogą zarezerwować dowolny samochód i gdziekolwiek chcą, od tętniącej życiem społeczności zaufanych gospodarzy.
Deweloperzy z firmy Turo zainwestowali ostatnio znaczne środki w poprawę wydajności uruchamiania swojej aplikacji na Androida. Czas uruchamiania to pierwsze wrażenie, jakie użytkownicy mają na temat aplikacji, a wolniejsze czasy ładowania mogą negatywnie wpłynąć na utrzymanie i zaangażowanie użytkowników. Zespół chciał zapewnić użytkownikom szybsze i bardziej usprawnione działanie za każdym razem, gdy uruchamiają aplikację. Korzystając z najlepszych narzędzi, zasobów i praktyk Androida, udało im się skrócić czas uruchamiania aplikacji o 77%.
Przygotowanie sceny z biblioteką App Startup
Inicjowanie aplikacji obejmuje cały proces uruchamiania aplikacji i cały uruchamiany przez nią kod przed wyrenderowaniem pierwszej ramki interfejsu użytkownika. W przypadku Turo oznaczało to, że użytkownicy musieli czekać na pierwsze uruchomienie aplikacji, zsynchronizowane żądania sieciowe i niestandardową animację powitalną — wszystko to, zanim kiedykolwiek pokazano im ekran główny aplikacji.
Programiści Turo wiedzieli, że aby skrócić czas ładowania aplikacji, będą musieli skondensować i usunąć wiele z tych uciążliwych zdarzeń uruchamiania. Aby ograniczyć te zdarzenia, inżynierowie firmy Turo wykorzystali bibliotekę uruchamiania aplikacji systemu Android .
Biblioteka App Startup dała programistom Turo prosty, usprawniony sposób inicjowania wielu komponentów podczas uruchamiania aplikacji. Umożliwiło im to również wybranie, które komponenty mają zostać zainicjowane iw jakiej kolejności, co pozwoliło im znacznie skrócić czas ładowania. Posiadanie biblioteki App Startup stanowi podstawę dla pozostałej części optymalizacji startowej Turo.
Odraczanie żądań sieciowych i wycinanie ekranu powitalnego
Przed optymalizacją aplikacja wykonywała sekwencyjnie wiele żądań sieciowych, a następnie wyświetlała niestandardową jednosekundową animację powitalną , zanim użytkownicy mogli uzyskać dostęp do ekranu głównego aplikacji. Spowodowało to powolny proces uruchamiania, zwłaszcza jeśli użytkownik miał słabą łączność sieciową.
Usunięcie animacji powitalnej było łatwym sposobem dla programistów Turo na poprawę postrzeganego czasu ładowania. A dzięki równoległym i asynchronicznym żądaniom sieciowym użytkownicy mogą znacznie szybciej uzyskiwać dostęp do ekranu głównego. „Początkowo używaliśmy dedykowanej SplashActivity, aby uruchomić wszystkie prace startowe przed przekierowaniem aplikacji do HomeActivity. Jednak najnowsze wytyczne odradzają takie podejście. Dlatego wyeliminowaliśmy zbędne SplashActivity i przenieśliśmy całą logikę startową do naszej aktywności root, wykorzystując API Splash Screen” – powiedział Pavlo Stavytskyi, starszy inżynier oprogramowania w Turo.
W tym samym czasie aplikacja wykonywała również szereg innych żądań sieci startowych, aby dostosować działanie do indywidualnych użytkowników, co skutkowało niespójnymi doświadczeniami użytkowników. „Jeśli aplikacja jest używana przez gościa, niektóre żądania sieciowe pomagają zdecydować, który ekran powinien być pokazany po ekranie powitalnym” – powiedział Pavlo. „Domyślnie jest to ekran główny. Istnieją jednak szczególne przypadki, w których użytkownik może zostać przekierowany bezpośrednio do aktywnej rezerwacji pojazdu lub do ekranu opinii”.
Zespół nie chciał spowalniać każdego uruchamiania aplikacji, sprawdzając te niszowe scenariusze. Zamiast tego Turo zawsze domyślnie otwiera ekran główny podczas asynchronicznego wysyłania żądań sieciowych. Jeśli wymagane jest przekierowanie, odpowiedni ekran jest wyświetlany na górze ekranu głównego.
Stosowanie profili bazowych
Zespół Turo zastosował również profile bazowe, aby poprawić wydajność aplikacji. Profile bazowe pomagają wstępnie skompilować ścieżki kodu startowego z wyprzedzeniem, zwiększając czas uruchamiania aplikacji Turo o kolejne 15% zgodnie z testami Macrobenchmark. „Po usunięciu wszystkich synchronicznych żądań sieciowych nasz czas uruchamiania stał się bardziej deterministyczny i bardziej sensowne było zastosowanie profili bazowych” — powiedział Pavlo.
Poprawa wydajności może prowadzić do poprawy utrzymania użytkowników, zwiększenia liczby transakcji i lepszych ocen. Profile bazowe to szybki i niezawodny sposób na znaczne przesunięcie igły.
Priorytetyzacja wydajności startowej
Istnieje wiele czynników, które mogą wpływać na czas uruchamiania aplikacji. Deweloperzy muszą określić, gdzie, kiedy i jak mogą ulepszyć swoją aplikację, aby zapewnić jej optymalizację pod kątem jak najlepszego doświadczenia użytkownika.
„Ważne jest, aby rozpocząć doskonalenie od zadań, które wymagają najmniejszego wysiłku i dają najlepsze wyniki” — powiedział Pavlo. „W wielu przypadkach inżynierowie stają w obliczu konfliktu między alokacją czasu i zasobów na pracę nad produktem lub optymalizację wydajności. Jednak traktowanie wydajności jako niezależnej cechy produktu jest nieuniknione dla jego sukcesu”.
Zoptymalizuj swoją aplikację już dziś
Skróć czas uruchamiania aplikacji dzięki sprawdzonym metodom optymalizacji aplikacji na Androida , uruchamianiu aplikacji na Androida i profilom bazowym .
Możesz także przeczytać pełną historię tego, jak firma Turo poprawiła wydajność uruchamiania swojej aplikacji, korzystając z narzędzi programistycznych Androida i najlepszych praktyk.