В 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());
}
}
Но, судя по логам, картинка никогда не добавляется в кэш.
Правильный ли это способ загрузки? Решит ли это проблему с загрузкой больших изображений?