我將圖像上傳到我的服務器,一旦上傳我的服務器響應新的URI(可能與舊的URL相同),我想刪除舊的緩存圖像,爲新的URI插入新的。Fresco以編程方式將位圖添加到緩存
我嘗試做來實現:
// Retrofit2 onResponse
String newImageUri = response.body().getUri();
String oldImageUri = Preferences.getUser().getImageUrl();
// Remove old image from cache
Fresco.getImagePipeline().evictFromCache(Uri.parse(oldImageUri));
Fresco.getImagePipeline().evictFromDiskCache(Uri.parse(oldImageUri));
Fresco.getImagePipeline().evictFromMemoryCache(Uri.parse(oldImageUri));
Fresco.getImagePipelineFactory().getMainFileCache().remove(new SimpleCacheKey(oldImageUri));
// Insert new image at new URI
try {
Fresco.getImagePipelineFactory().getMainFileCache().insert(new SimpleCacheKey(newImageUri), new WriterCallback() {
@Override
public void write(OutputStream os) throws IOException {
os.write(imageData); // byte[] or the new Bitmap
}
});
}
catch (Exception e) {
e.printStackTrace();
}
uriProfileImage.setImageURI(newImageUri);
有沒有例外,但我仍然只看到舊的圖像。
在[這](https://stackoverflow.com/a/30256786/2910520)答案,在使用evict的時候,使用了從'getImagePipelineFactory()。[from_to_delete] .remove(...)'調用它們的.remove()方法。你可以嘗試這個,看看是否有幫助(也許不會爲你工作,因爲答案是2年,而Fresco庫可能已經改變了一些東西在此期間) – MatPag
@MatPag我看到了答案,顯然它不適合我。 – Arbitur
你說你只看到舊圖像。你是怎麼測試這個的? –