将图像缓存在Android内存中是否有意义?

时间:2016-09-28 13:59:17

标签: android caching android-recyclerview recycler-adapter

RecyclerView.Adapter onBindViewHolder现在看起来像这样:

@Override
public void onBindViewHolder(UserSettingHolder userSettingHolder, int i) {
   // .. some code
    try {

        // TODO: Image loader need
        File file = new File(MainActivity.context.getFilesDir(), _id + ".photo");
        InputStream in = new BufferedInputStream(new FileInputStream(file));
        byte[] buf = new byte[(int) file.length()];
        int numRead = in.read(buf);

        Bitmap bitmap = BitmapFactory.decodeByteArray(buf, 0, numRead);
        userSettingHolder.icon.setImageBitmap(bitmap);

    } catch (Exception e) {
        System.out.print(e);
    }
} 

我想总是从文件系统中读取文件效率不高,特别是onBindViewHolder不经常调用的文件系统。您是否建议使用“内存缓存”来存储图像?在iOS NSCache中提供此功能。 NSCache有一个优势,如果你的内存不足,它将首先被清除。

Android中的替代技术是什么?

1 个答案:

答案 0 :(得分:0)

在这种情况下可以使用很多第三方库。 以下是滑行示例:

     Glide.with(context)
    .load(filePath)
    .setMemoryCache(new LruResourceCache(yourSizeInBytes))
    .into(youImageView);

Lib:https://github.com/bumptech/glide