San*_*ung 5 android caching image picasso
我想用Picasso图像缓存下载以下图像下载代码.
DownloadImage downloadImage = new DownloadImage();
downloadImage.execute(advert.getImgUrl());
private class DownloadImage extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... arg) {
Bitmap bmp = null;
try {
URL url = new URL(arg[0]);
bmp = BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return null;
}
return bmp;
}
@Override
protected void onPostExecute(Bitmap result) {
if (result == null) {
Intent intent = new Intent(AdvertisingActivity.this,
AdvertisingErrorActivity.class);
intent.putExtra("ad-error", "Error downloading image");
}
adImg.setImageBitmap(result);
super.onPostExecute(result);
}
}
Run Code Online (Sandbox Code Playgroud)
我有几个问题.
我想并行下载多个图像.如果我Picasso.with(getActivity()).load(url);使用不同的url值重复调用,这样做了吗?
我想在一个活动中下载图像并在另一个活动中使用它.这可能吗?如何才能做到这一点?
如果我Picasso.with(getActivity()).load(url);使用相同的url值多次调用,这是否会在下载映像后为后续调用加载缓存的图像?
如果由于某些原因图像下载过程没有成功,你能让Picasso报告你的失败吗?
Ell*_*lis 12
我已经对你的问题进行了更多研究,并决定将这个作为答案而不是评论发表.
Picasso.with(this).load("image1");,稍后调用Activity2中的相同URL.图像将被缓存(在内存或设备存储中),毕加索将重新使用它,而不是再次下载.这似乎没有这么明确的答案.您可以做的一件事是提供一个图像,以便在获取真实图像时发生错误:
Picasso.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
在尝试从网络上获取图像时,将显示"占位符"; 例如,如果URL无效或没有Internet连接,将显示"错误"图像.
更新,17/03/2014:
Picasso支持使用回调来报告失败.修改你的通常调用(例如上面的例子),如下所示:
.into(imageView, new Callback() {
@Override
public void onSuccess() {
// TODO Auto-generated method stub
}
@Override
public void onError() {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)总之,听起来毕加索将是一个很棒的图书馆选择.它确实使图像下载非常快速和非常容易,所以我非常喜欢它.
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |