Czas oczekiwania na uruchomienie to ważny wskaźnik pozwalający utrzymać liczbę aktywnych użytkowników dziennie i zapewnić im bezproblemowe wrażenia od pierwszej interakcji. Dotyczy to zwłaszcza środowisk z małą ilością pamięci RAM, które mogą się wiązać ze spadkiem wydajności. Zanim jednak zaczniesz usprawniać uruchamianie aplikacji, musisz poznać jej podstawowe aspekty.
Sprawdzone metody
Wysyłka za pomocą profilu podstawowego
Profile bazowe przyspieszają wykonywanie kodu o około 30% od pierwszego uruchomienia dzięki unikaniu interpretacji i kroków kompilacji w czasie (JIT) w przypadku uwzględnionych ścieżek kodu. Dzięki dostarczaniu profilu podstawowego w aplikacji środowisko wykonawcze Androida (ART) może optymalizować uwzględnione ścieżki kodu przez kompilację z wyprzedzeniem (AOT), zapewniając poprawę wydajności każdemu nowemu użytkownikowi i przy każdej aktualizacji aplikacji.
Unikaj inicjowania bez zastanowienia
Unikaj ciężkiej pracy, która może nie być konieczna podczas uruchamiania aplikacji.
Najbardziej prawdopodobnym scenariuszem rozpoczęcia procesu aplikacji jest jej uruchomienie. Jednak procesy aplikacji WorkManager, JobScheduler, BroadcastReceivedr, powiązane usługi i biblioteka startowa AndroidX też mogą uruchamiać procesy aplikacji w tle. W miarę możliwości unikaj niepotrzebnie inicjowania jakichkolwiek działań w klasie Application
z chwilą. Wiele bibliotek udostępnia funkcję inicjowania na żądanie, która umożliwia wywoływanie ich tylko w razie potrzeby.
Przenieś zadania z wątku UI do wątku w tle
Jeśli niektóre zadania trwają dłużej i blokują wątek główny, przenieś je do wątku w tle lub użyj menedżera WorkManager, aby zapewnić ich wydajność. Identyfikuj operacje, które zajmują duże przedziały czasu lub pochłaniają więcej czasu niż oczekiwano. Optymalizacja tych zadań może znacznie skrócić czas oczekiwania na uruchomienie.
Analizowanie i usuwanie poważnej rywalizacji z odczytem dysku
StrictMode to narzędzie dla programistów, które pomaga wykryć przypadki wystąpienia przypadkowego dostępu do dysku lub sieci w głównym wątku aplikacji, gdzie są odbierane operacje interfejsu i następują animacje. Gdy narzędzie wykryje możliwe ulepszenia, możesz automatycznie zamknąć aplikację lub zarejestrować naruszenie, aby dokładniej sprawdzić ją w późniejszym czasie.
Unikaj synchronicznych adresów IPC
Często długie przerwy w wykonywaniu aplikacji są spowodowane przez wywołania Binder – mechanizm komunikacji międzyprocesowej (IPC) na Androidzie. W najnowszych wersjach Androida jest to jedna z najczęstszych przyczyn przerw w działaniu wątku UI Thread. Ogólnie rzecz biorąc, rozwiązaniem jest unikanie wywoływania funkcji, które wykonują wywołania Binder. Jeśli jest to nieuniknione, stosuj wartość z pamięci podręcznej lub przenieś zadania do wątków w tle. Więcej informacji znajdziesz w artykule Opóźnienia w harmonogramie wątków.