package libcore.io; import java.io.File; import java.io.IOException; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Environment; public class LruCacheUtils { public static DiskLruCache cache; private static final String CACHE_PATH_NAME = "img"; // 缓存20MB private static int CACHE_SIZE = 20 * 1024 * 1024; public static DiskLruCache getInstance(Context context) { if (null == cache) { External external = new External(context); try { cache = DiskLruCache.open( external.getDiskCacheDir(CACHE_PATH_NAME), external.getAppVersion(), 1, CACHE_SIZE); } catch (IOException e) { e.printStackTrace(); } } return cache; } static class External { private Context context; public External(Context context) { this.context = context; } public File getDiskCacheDir(String uniqueName) { String cachePath; if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState()) || !Environment.isExternalStorageRemovable()) { cachePath = context.getExternalCacheDir().getPath(); } else { cachePath = context.getCacheDir().getPath(); } return new File(cachePath + File.separator + uniqueName); } public int getAppVersion() { try { PackageInfo info = context.getPackageManager().getPackageInfo( context.getPackageName(), 0); return info.versionCode; } catch (NameNotFoundException e) { e.printStackTrace(); } return 1; } } }