Przesyłam obraz do mojego serwera i po przesłaniu mój serwer odpowiada nowym identyfikatorem URI (może to być ten sam adres URL co stary), chcę usunąć stary buforowany obraz i wstaw nowy dla nowego URI.Fresco programowo dodaje Bitmap do pamięci podręcznej
staram się tego dokonać wykonując:
// 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);
Nie ma żadnych wyjątków, ale nadal tylko zobaczyć stare zdjęcie.
W [to] (https://stackoverflow.com/a/30256786/2910520) Odpowiedź one użyłem metody .remove() wywołującej je z 'getImagePipelineFactory(). [from_to_delete] .remove (...)' podczas gdy używasz eksmitów. Możesz spróbować z tym i zobaczyć, czy pomaga (może nie będzie działać dla ciebie, ponieważ odpowiedź ma 2 lata, a biblioteka Fresco prawdopodobnie coś zmieniła w międzyczasie) – MatPag
@MatPag Widziałem tę odpowiedź, wyraźnie nie działa dla mnie. – Arbitur
Powiedziałeś, że widzisz tylko stary obraz. Jak to przetestowałeś? –