图像未在使用毕加索的应用程序中更新

Image is not updating in app using picasso

当我尝试在我的应用程序中更新图像时,它并没有在更新,而是在 firebase 存储更新中 我习惯了

Picasso.get().load(image).placeholder(R.drawable.profile).into(profileImage);

我也试过

Picasso.with(SetupActivity.class).load(image).placeholder(R.drawable.profile).into(profileImage);

这些是我的依赖项

    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.2'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-storage:16.0.1'

    implementation 'de.hdodenhof:circleimageview:2.2.0'

    implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.+'

    implementation 'com.squareup.picasso:picasso:2.71828'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

在毕加索中尝试这个 .memoryPolicy(MemoryPolicy.NO_CACHE).networkPolicy(NetworkPolicy.NO_CACHE)

Picasso 会缓存图像,但如果您的图像具有不同的 URI,它会下载它,但之前的图像仍被缓存,您可以 'invalidate' 删除之前的图像,然后加载最近的图像。

Picasso.with(bContext).invalidate(bFileURI); //invalidates files

如果你的结构是这样的,你使用相同的 URI 覆盖图像并且你根本不希望它缓存那么去

Picasso.with(bContext) .load(bImage_url) .memoryPolicy(MemoryPolicy.NO_CACHE) .networkPolicy(NetworkPolicy.NO_CACHE) .placeholder(R.drawable.default_img) .into(bImageView);

(我宁愿无效,因为后者不是离线使用的好习惯)

由于您使用的是 Firebase,因此您也可以考虑这一点并将字节作为字符串保存在 SharePreference 中以供离线使用...仍然是不好的做法。

final long bOneMB = 1024 * 1024;                               //size 
userProfileImageRef.getBytes(bOneMB)                           //get byte
    .addOnSuccessListener(new OnSuccessListener<byte[]>() {       // add listener
        @Override
        public void onSuccess(byte[] bytes) {                     // called if successful
            Bitmap bBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
            profileImage.setImageBitmap(bBitmap);                // sets bitmap in image view
        }
    });