Te sprawdzone metody pomogą Ci zoptymalizować aplikację bez utraty jakości.
Korzystanie z profili podstawowych
Profile podstawowe mogą zwiększyć szybkość wykonywania kodu o 30% od pierwszego uruchomienia i sprawić, że wszystkie interakcje użytkownika – takie jak uruchamianie aplikacji, przechodzenie między ekranami czy przewijanie treści – będą płynniejsze od pierwszego uruchomienia. Zwiększenie szybkości i czasu reakcji aplikacji prowadzi do wzrostu liczby aktywnych użytkowników dziennie i wyższego średniego wskaźnika ponownych wizyt.
Korzystanie z profilu startupu
Profil uruchomienia jest podobny do profilu podstawowego, ale jest uruchamiany w czasie kompilacji, aby zoptymalizować układ DEX i przyspieszyć uruchamianie aplikacji.
Korzystanie z biblioteki uruchamiania aplikacji
Biblioteka uruchamiania aplikacji umożliwia definiowanie inicjatorów komponentów, które współdzielą jednego dostawcę treści, zamiast definiowania osobnych dostawców treści dla każdego komponentu, który chcesz zainicjować. Może to znacznie skrócić czas uruchamiania aplikacji.
Opóźnione ładowanie bibliotek lub wyłączanie automatycznej inicjalizacji
Aplikacje korzystają z wielu bibliotek, z których niektóre mogą być wymagane do uruchomienia. Może jednak istnieć wiele bibliotek, w których inicjowanie może być opóźnione do momentu narysowania pierwszej klatki. Niektóre biblioteki mają opcję wyłączenia automatycznej inicjalizacji podczas uruchamiania lub inicjalizacji na żądanie. Użyj tej opcji, aby odłożyć inicjowanie do momentu, gdy będzie to konieczne, co pomoże zwiększyć wydajność. Możesz na przykład użyć inicjowania na żądanie, aby wywoływać WorkManager tylko wtedy, gdy komponent jest wymagany.
Używanie stanu w komponentach
Stan to wszystkie dane, które mogą się zmieniać w czasie i określają, co wyświetla interfejs lub jak się zachowuje. Kompozycja jest deklaratywna, więc ekran nie aktualizuje się automatycznie, chyba że interfejs użytkownika wyraźnie obserwuje zmiany stanu i na nie reaguje.
Rozważ użycie kompozycji warunkowej, aby odroczyć wczytywanie części interfejsu, które nie są od razu widoczne po uruchomieniu, np. ekranów błędów, opcjonalnych szczegółów czy dodatkowych kart. Umieszczając złożone komponenty w prostej kontroli stanu, unikasz wykonywania logiki kompozycji w krytycznym oknie uruchamiania, dzięki czemu początkowy układ jest lekki.
var shouldLoad by remember {mutableStateOf(false)}
if (shouldLoad) {
MyComposable()
}
Wczytaj funkcje kompozycyjne w bloku warunkowym, modyfikując shouldLoad:
LaunchedEffect(Unit) {
shouldLoad = true
}
Spowoduje to rekompozycję, która obejmuje kod w bloku warunkowym w pierwszym fragmencie. Więcej informacji znajdziesz w artykule Stan w funkcjach kompozycyjnych.
Optymalizacja ekranu powitalnego
Ekrany powitalne są ważną częścią uruchamiania aplikacji, a dobrze zaprojektowany ekran powitalny może poprawić ogólne wrażenia związane z uruchamianiem aplikacji. Android 12 (API na poziomie 31) i nowsze wersje zawierają ekran powitalny, który ma poprawiać wydajność. Więcej informacji znajdziesz w sekcji Ekran powitalny.
Używaj skalowalnych typów obrazów
Zalecamy używanie grafiki wektorowej. Jeśli to niemożliwe, używaj obrazów WebP. WebP to format obrazu, który zapewnia bezstratną i stratną kompresję obrazów w internecie. Za pomocą Android Studio możesz przekonwertować istniejące obrazy w formatach BMP, JPG, PNG lub statyczne GIF na format WebP. Więcej informacji znajdziesz w artykule Tworzenie obrazów WebP.
Dodatkowo zminimalizuj liczbę i rozmiar obrazów wczytywanych podczas uruchamiania.
Korzystanie z interfejsów Performance API
Interfejs API wydajności odtwarzania multimediów jest dostępny na Androidzie 12 (poziom API 31) i nowszym. Za pomocą tego interfejsu API możesz sprawdzać możliwości urządzenia i wykonywać odpowiednie operacje.
Nadawanie priorytetu śladom uruchomienia „na zimno”
Uruchomienie „na zimno” oznacza uruchomienie aplikacji od zera, czyli proces systemu nie tworzy jeszcze procesu aplikacji. Aplikacja zwykle uruchamia się „na zimno”, gdy uruchamiasz ją po raz pierwszy od czasu uruchomienia urządzenia lub od czasu, gdy system wymusił jej zatrzymanie. Uruchomienie „na zimno” jest znacznie wolniejsze, ponieważ aplikacja i system muszą wykonać więcej czynności, które nie są wymagane w przypadku innych typów uruchomienia, takich jak uruchomienie „na ciepło” i z pamięci. Śledzenie systemu zimne uruchomienia zapewnia lepszy wgląd w wydajność aplikacji.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Analiza i optymalizacja uruchamiania aplikacji
- Czas uruchomienia aplikacji
- Zablokowane klatki