Pamięć jest cennym zasobem w każdym środowisku programistycznym, ale jest jeszcze bardziej przydatna w systemach operacyjnych mobilnych, gdzie pamięć fizyczna jest często ograniczona. Dotyczy to zwłaszcza urządzeń natywnie z małą ilością pamięci, które są zwykle używane na urządzeniach z Androidem (wersja Go). Istnieje kilka sposobów optymalizacji pamięci aplikacji, aby płynnie działały w takich środowiskach.
Sprawdzone metody
Zwolnij pamięć podręczną
Może za mało pamięci, aby procesy w tle działały tak jak w typowym środowisku. W takim przypadku możesz użyć narzędzia onTrimMemory()
, aby usunąć niepotrzebną pamięć z procesu aplikacji. Aby jak najlepiej określić obecny poziom wyposażenia aplikacji, użyj ActivityManager.getMyMemoryState(RunningAppProcessInfo)
i zoptymalizuj lub usuń niepotrzebne zasoby. Możesz na przykład ograniczyć wykorzystanie pamięci przez wyrażenia, wyszukiwanie, wyświetlanie pamięci podręcznej lub rozszerzenia z możliwością otwierania, aby ograniczyć liczbę awarii lub błędów ANR w aplikacji z powodu małej ilości pamięci.
Harmonogram zadań
Jednoczesne planowanie może prowadzić do równoległego wykonywania wielu operacji wymagających dużej ilości pamięci, co prowadzi do rywalizacji o zasoby przekraczające maksymalne wykorzystanie pamięci przez aplikację. Staraj się odpowiednio przydzielać zasoby, rozdzielając procesy na zadania wymagające dużej mocy procesora o krótkim czasie oczekiwania we właściwej puli wątków, które są uruchamiane na urządzeniach, na których występują różne ograniczenia zasobów.
Wycieki pamięci
Do wykrywania i ograniczania wycieków pamięci w aplikacji należą różne narzędzia, takie jak profil pamięci masowej w Android Studio i Perfetto. Zdecydowanie zalecamy korzystanie z tych narzędzi do identyfikowania i rozwiązywania potencjalnych problemów z pamięcią, dzięki czemu inne komponenty aplikacji mogą działać bez dodatkowego obciążenia systemu.
Inne wskazówki
- Duże obrazy lub elementy rysowane zużywają więcej pamięci w aplikacjach. Identyfikuj i optymalizuj duże lub kolorowe mapy bitowe, aby zmniejszyć wykorzystanie pamięci.
- Tworząc aplikację na Androida (wersja Go), spróbuj wybrać inne opcje GIF-ów, ponieważ pliki GIF zużywają dużo pamięci.
- Możesz zmniejszyć rozmiar plików PNG bez utraty jakości, używając narzędzi takich jak WebP, pngcrush i pngquant. Wszystkie te narzędzia pozwalają zmniejszyć rozmiar pliku PNG przy zachowaniu jakości obrazu.
- Narzędzie aapt może optymalizować zasoby obrazów umieszczone w komponencie
res/drawable/
za pomocą bezstratnej kompresji podczas procesu kompilacji. Na przykład narzędzie aapt może przekonwertować plik PNG o prawdziwych kolorach, który nie wymaga więcej niż 256 kolorów, do 8-bitowego pliku PNG z paletą kolorów. Dzięki temu obraz będzie miał taką samą jakość i mniej pamięci.