我正在使用 Picasso 库下载并在列表视图中显示图像,我使用以下代码:
Picasso.with(mContext).load(listItem.getMainPhoto()).into(holder.image);
where listItem.getMainPhoto()
是一个网址。
但我需要下载服务中的一些图像,通常是在应用程序无法运行时,以便用户在离线时可以看到它们,例如我需要下载 10 个图像,稍后将在列表视图中使用。
所以我有两个问题:
- 我怎样才能用毕加索下载图像并将它们存储在永久内存中,所以当我使用
Picasso.with(mContext).load(listItem.getMainPhoto()).into(holder.image);
该库将首先尝试在本地获取图像,如果不存在,它将从网络获取它?
2.如果lib已将图像下载到永久内存中,我该如何清理永久内存?
我猜想毕加索支持这个功能,因为我注意到该库有时会显示现金图像。谢谢
我知道这是一个老问题,但也许有人会发现这很有用。
您可以使用目标下载 picasso 图像:
Picasso.with(mContext)
.load(listItem.getMainPhoto())
.into(target);
private Target target = new Target() {
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
new Thread(new Runnable() {
@Override
public void run() {
File file = new File(Environment.getExternalStorageDirectory().getPath() +"/imagename.jpg");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 75, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
if (placeHolderDrawable != null) {
}
}
};
要清理缓存,您可以将此类添加到 picasso 包中:
package com.squareup.picasso;
public class PicassoTools {
public static void clearCache (Picasso p) {
p.cache.clear();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)