BitNeBolt
@BitNeBolt

Почему не удается загрузить картинку в кэш (Picasso)?

В RecyclerView необходимо загружать изображения по путям, которые хранятся в бд. При загрузке больших изображений (3000 * 4000) инициализация списка происходит с лагами. Чтобы избежать этого я решил попробовать загружать картинки в из кэша, используя след. код:
LruCache cache = new LruCache(contex);
        if (cache.get(imgPath) != null)
        {
            //Если картинка есть в кэше
            holder.image.setImageBitmap(cache.get(imgPath));
            Log.d("Picture ", "Picture is in cache");
        }
        else
        {
            try
            {
                //если картинки нету в кэше
                Picasso.get().load(new File(imgPath).getAbsoluteFile()).into(holder.image);
                cache.set(imgPath, BitmapFactory.decodeFile(new File(imgPath).getAbsolutePath()));
                Log.d("Picture ", "Picture is not in cache");
            }
            catch (java.lang.NullPointerException e)
            {
                Log.d("Picture", "Failed to load picture from this path");
                Log.d("Picture", "cache size: " + cache.size());
            }
        }


Но, судя по логам, картинка никогда не добавляется в кэш.

Правильный ли это способ загрузки? Решит ли это проблему с загрузкой больших изображений?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Не надо этого извращения. У пикассы должен быть свой кеш, им и пользуйся. Если его нет, смени пикассу на глайд.
И, в любом случае, картинки 3к х 4к это жесть. Глайд их будет ресайзить на ходу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы