在磁盘上使用 picasso 加载图像
Image loading using picasso on disk
我正在使用 Picasso。
我想在磁盘上缓存图像,我正在使用 okhttpdownloader。
这是我正在尝试做的事情我希望将图像缓存在外部 SD 卡或 phone 内存中,但由于内存限制不想将图像缓存在堆内存中。因此,如果图像是第一次加载,它应该缓存在磁盘上,当下次请求相同时 url 它应该首先查看磁盘是否被缓存。
我无法实现以下是我的代码。
public class PicassoCache {
/**
* Static Picasso Instance
*/
private static Picasso picassoInstance = null;
private File cacheDir;
/**
* PicassoCache Constructor
*
* @param context application Context
*/
private PicassoCache (Context context) {
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir = context.getExternalCacheDir();
else
cacheDir = context.getCacheDir();
Downloader downloader = new OkHttpDownloader(cacheDir, Integer.MAX_VALUE);
Picasso.Builder builder = new Picasso.Builder(context);
builder.downloader(downloader);
picassoInstance = builder.build();
}
/**
* Get Singleton Picasso Instance
*
* @param context application Context
* @return Picasso instance
*/
public static Picasso getPicassoInstance (Context context) {
if (picassoInstance == null) {
new PicassoCache(context);
return picassoInstance;
}
return picassoInstance;
}
}
在适配器内部我有以下代码
PicassoCache.getPicassoInstance(context)
.load(item.imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(holder.itemImage);
尝试删除
.networkPolicy(NetworkPolicy.NO_CACHE)
并将 NO_STORE 添加到 memoryPolicy
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
我正在使用 Picasso。
我想在磁盘上缓存图像,我正在使用 okhttpdownloader。
这是我正在尝试做的事情我希望将图像缓存在外部 SD 卡或 phone 内存中,但由于内存限制不想将图像缓存在堆内存中。因此,如果图像是第一次加载,它应该缓存在磁盘上,当下次请求相同时 url 它应该首先查看磁盘是否被缓存。
我无法实现以下是我的代码。
public class PicassoCache {
/**
* Static Picasso Instance
*/
private static Picasso picassoInstance = null;
private File cacheDir;
/**
* PicassoCache Constructor
*
* @param context application Context
*/
private PicassoCache (Context context) {
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir = context.getExternalCacheDir();
else
cacheDir = context.getCacheDir();
Downloader downloader = new OkHttpDownloader(cacheDir, Integer.MAX_VALUE);
Picasso.Builder builder = new Picasso.Builder(context);
builder.downloader(downloader);
picassoInstance = builder.build();
}
/**
* Get Singleton Picasso Instance
*
* @param context application Context
* @return Picasso instance
*/
public static Picasso getPicassoInstance (Context context) {
if (picassoInstance == null) {
new PicassoCache(context);
return picassoInstance;
}
return picassoInstance;
}
}
在适配器内部我有以下代码
PicassoCache.getPicassoInstance(context)
.load(item.imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(holder.itemImage);
尝试删除
.networkPolicy(NetworkPolicy.NO_CACHE)
并将 NO_STORE 添加到 memoryPolicy
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)