У меня есть возможная проблема (OOM) с загрузкой списка изображений из БД. В моей базе данных изображения хранятся как BLOB. Эти изображения извлекаются и отображаются во Фрагменте с помощью RecyclerView. Изображения загружаются с помощью Скольжение и я использую GridLayoutManager для отображения изображений 3 в одном ряду (фото прилагается):Загрузка списка загруженных байтов Android
Glide
.with(context)
.load(image[])
.asBitmap()
.override(dimensionPixelSize)
.dontAnimate()
.centerCrop()
.placeholder(R.drawable.image)
.into(imageView);
Когда изображения извлекается из БД, я хранить его в одноточечного класс, а затем использовать этот список изображений при создании адаптера и т.д.
class ImageData {
private List<ImageModel> images;
private static final ImageDate instance = new ImageData();
private ImageData() {
}
public static ImageData getInstance() {
return instance;
}
public void setImages(List<ImageModel> images) {
this.images = images;
}
public List<ImageModel> getImages() {
return images;
}
}
ImageModel класс имеет байт [] для фактического изображения и длинных полей временных меток. Также есть возможность показать полноэкранное изображение onClick - в этом случае я создаю DialogFragment с помощью viewPager, а ViewPagerAdapter использует тот же список из класса singleton. Фактическая проблема в том, что иногда я могу получить OOM. Это происходит после 15/20 мин. использования приложения и несколько раз закрытия и открытия приложения. Я знаю, что у Glide есть стратегия памяти и диска, например, я попытался использовать .skipMemoryCache (true) или diskCacheStrategy (DiskCacheStrategy.SOURCE), но без успеха. Можете ли вы помочь мне с некоторым предложением? Если вам нужно, я могу добавить еще немного кода, но в основном я использую шаблон ViewHolder с RecyclerView, и этот код Glide для загрузки изображений находится внутри класса ViewHolder.
'Когда изображения извлекаются из БД, я храню его в одиночном классе, вы не должны этого делать, вместо этого загружайте изображение непосредственно из БД всякий раз, когда это необходимо. –
Хорошо, я попробую таким образом и удалю Singleton class – slena17
'byte [] для фактического изображения'. Что именно? Jpg? Png? Что именно вы храните как BLOB? – greenapps