Эффективная обработка нескольких растровых изображений в приложении android - PullRequest
0 голосов
/ 23 апреля 2020

Я много исследовал эту топику c, но не смог найти наиболее эффективного решения проблемы. Я работаю над приложением для редактирования фотографий, в котором у меня есть более 5 растровых изображений, каждое из которых имеет размеры приблизительно [1300x1000] в памяти с конфигурацией ARGB_8888. Но я начал сталкиваться с большим количеством сбоев Out of Memory на небольших android версиях, таких как Android 7, 6, 5 и 8. Когда пользователь выбирает изображение, все 5 битовых карт загружаются в ОЗУ, что занимает около 60 м.б. Я использую Glide для загрузки изображений, но так как мне нужно работать с каждым растровым изображением индивидуально, я загружаю ресурс как Растровое изображение из Glide. Но после загрузки, когда я присваиваю его Bitmap android выдает ошибку OOM.

Насколько я знаю, я могу использовать Disk Cache или Memory Cache (https://developer.android.com/topic/performance/graphics/cache-bitmap) для размещения битовых карт на диске или в памяти и вызывать их при необходимости в оперативной памяти. Но я точно не знаю, что лучше всего делать.

  1. Наличие нескольких (около 5) растровых изображений, которые могут быть легко доступны для обработки в приложении как в оперативной памяти, так и на диске.
  2. Загрузка растровых изображений с ОЗУ или с диска без снижения производительности приложения на небольших устройствах.
  3. Работает плавно, без сбоев OOM.

Скажите, пожалуйста, как я могу решить эту проблему?.

...