Загрузка растровых изображений в Android-приложение может быть сложной задачей по ряду причин:
- Растровые изображения могут очень легко исчерпать доступную приложению память. Например, камера телефона Pixel делает фотографии размером до 4048x3036 пикселей (12 мегапикселей). Если используется конфигурация растрового изображения
ARGB_8888, которая является значением по умолчанию для Android 2.3 (уровень API 9) и выше, загрузка одной фотографии в память занимает около 48 МБ памяти (4048*3036*4 байта). Такой большой объем памяти может немедленно исчерпать всю доступную приложению память. - Загрузка растровых изображений в потоке пользовательского интерфейса может ухудшить производительность приложения, вызывая замедление отклика или даже сообщения об ошибке ANR. Поэтому важно правильно управлять потоками при работе с растровыми изображениями.
- Если ваше приложение загружает в память несколько растровых изображений, вам необходимо умело управлять кэшированием памяти и диска. В противном случае может пострадать отзывчивость и плавность пользовательского интерфейса вашего приложения.
В большинстве случаев мы рекомендуем использовать библиотеку Glide для получения, декодирования и отображения растровых изображений в вашем приложении. Glide абстрагирует большую часть сложностей, связанных с обработкой этих и других задач, касающихся работы с растровыми и другими изображениями на Android. Для получения информации об использовании и загрузке Glide посетите репозиторий Glide на GitHub.
Вы также можете выбрать вариант работы напрямую с низкоуровневыми API, встроенными в фреймворк Android. Для получения дополнительной информации об этом см. разделы «Эффективная загрузка больших растровых изображений» , «Кэширование растровых изображений» и «Управление памятью растровых изображений» .
