图像未在使用毕加索的应用程序中更新
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
}
});
当我尝试在我的应用程序中更新图像时,它并没有在更新,而是在 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
}
});