需要导入依赖implementation 'com.jakewharton:disklrucache:2.0.2'
此代码用Android studio 3.2 开发 仅供参考
package jiyun.com.demodisklrucacher.adapter;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.util.LruCache;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.jakewharton.disklrucache.DiskLruCache;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Random;
import jiyun.com.demodisklrucacher.R;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener{
//上下文对象
private Context mContext;
//存放bean对象的列表
private List<String> mList;
//生成随机高度的Random
private Random rand;
//图片缓存容量的上限
private int SizeofCache = 0;
//LruCache实例
private LruCache lruCache;
//DiskLruCache的实例
private DiskLruCache diskLruCache;
public MyAdapter(Context mContext, List<String> mList) {
this.mContext = mContext;
this.mList = mList;
rand = new Random();
SizeofCache = (int) ((Runtime.getRuntime().maxMemory() / 1024) / 8);
lruCache = new LruCache<String, Bitmap>(SizeofCache) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount() / 1024;
}
};
File