android - 首次运行时未加载 picasso 图像

标签 android picasso

我正在使用 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/

相关文章:

android - 如何在 Glide/Picasso/Ion 等的占位符中加载 gif 图像

java - 无法将 Firebase 数据库中存储的图像(静态)提取到我的应用程序中

android - 支持库 23.2.0 中的 CoordinatorLayout IllegalStateException

android - 如何从应用程序自己的参数中获取 uid?

android - Android中如何设置字符串的值?

java - Android: picasso 在点击时放大图像?

Android Studio Picasso gif 加载占位符图像

android - 是否可以在 flutter 中为 SliverList 内的按钮实现 Dismissible 小部件

android - 如何暂停/恢复 Observable?

android - 在 picasso 加载实际图像之前模糊缩略图