我正在使用 picasso 从 url 加载图像。由于我需要位图进行进一步处理,因此我使用 Target() 类来保存位图。但是 picasso 并没有在第一次运行时加载图像。但是当我去另一个 Activity 并回到 picasso 实现的 Activity 时它会加载。为什么会这样?任何修复?我的代码如下,
Picasso.with(getActivity()).load(card.getExtras().getImageUrl()).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Date now = new Date();
filename ="certificate_"+ formatter.format(now) + ".png";
File path=null;
if (getActivity().getExternalCacheDir()==null) {
path=getActivity().getCacheDir();
}
if(getActivity().getExternalCacheDir()!=null){
path=getActivity().getExternalCacheDir();
}
File image=new File(path+filename);
FileOutputStream fileOutPutStream = null;
try {
fileOutPutStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fileOutPutStream);
fileOutPutStream.flush();
fileOutPutStream.close();
Log.d("---REACHED","FILE SAVED--------------");
} catch (Exception e) {
Crashlytics.logException(e);
}
最佳答案
这是一个已知问题,因为 picasso 只保留一周的引用资料:
此问题的解决方案是将目标设置为您希望设置的 View 组件的 标签
。
所以你的代码看起来像这样:
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
.....
// set the tag to the view
holder.imageView.setTag(target);
//set the target to picasso
Picasso.with(getActivity()).load(card.getExtras().getImageUrl()).into(target);
在 this 中给出了相同的正确解释。所以发布!
关于android - 首次运行时未加载 picasso 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42826035/