Wczytywanie map bitowych w aplikacji na Androida może być trudne z kilku powodów:
- Mapy bitowe mogą bardzo łatwo wyczerpać budżet pamięci aplikacji. Na przykład aparat w telefonie Pixel może robić zdjęcia w rozdzielczości do 4048 x 3036 pikseli (12 megapikseli).
Jeśli używana jest konfiguracja bitmapy
ARGB_8888
, czyli domyślnie w Androidzie 2.3 (poziom interfejsu API 9) i nowszych, wczytywanie pojedynczego zdjęcia do pamięci zajmuje około 48 MB pamięci (4048 × 3036 × 4 bajty). Tak duże zapotrzebowanie na pamięć może natychmiast wykorzystać całą pamięć dostępną dla aplikacji. - Wczytywanie map bitowych w wątku interfejsu może pogorszyć wydajność aplikacji, powodując powolne czasy reakcji, a nawet komunikaty o błędach ANR. Dlatego tak ważne jest prawidłowe zarządzanie wątkami podczas pracy z mapami bitowymi.
- Jeśli aplikacja wczytuje do pamięci wiele map bitowych, musisz umiejętnie zarządzać pamięcią i buforowaniem dysku. W przeciwnym razie responsywność i płynność interfejsu aplikacji mogą ulec pogorszeniu.
W większości przypadków zalecamy używanie biblioteki Glide do pobierania, dekodowania i wyświetlania bitmap w aplikacji. Glide to narzędzie, które eliminuje większość złożoności przy obsłudze tych i innych zadań związanych z pracą z mapami bitowymi i innymi obrazami na Androidzie. Informacje o używaniu i pobieraniu Glide znajdziesz w repozytorium Glide na GitHubie.
Możesz też zdecydować się na bezpośrednią współpracę z interfejsami API niższego poziomu wbudowanymi w platformę Androida. Więcej informacji na ten temat znajdziesz w artykułach Loading Large Bitmaps Efficiently (Wydajne ładowanie dużych map bitowych), Buforowanie map bitowych i Zarządzanie pamięcią bitmap.