Ich habe eine Observable, die ein Bild asynchron mit verschiedenen filePath
lädt und ich möchte die Bitmap-Variable zwischenspeichern. Ich habe versucht, nur eine .cache
Methode hinzuzufügen, aber es hat nicht geholfen. Wie führe ich Caching in meinem Fall durch?Caching beobachtbar mit RXJava. Android
Observable.fromCallable(() -> {
File outputFile = new File(filePath);
Bitmap bitmap = decodeSampledBitmapFromUrl(newTAG, width, height);
return bitmap;
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(bitmap -> {
mImageView.setImageBitmap(bitmap);
},
throwable -> {
//handle it
});
müssen Sie die Bitmap irgendwo speichern. Oder verwenden Sie wahrscheinlich eine gute Bild-Caching-Lib wie Glide oder Picasso. Cache ist nützlich, wenn Sie während der Bildschirmdrehungsänderungen (Abonnieren und Abmelden) eine Netzwerkoperation fortsetzen möchten, um Netzwerkanrufe erneut zu verhindern. https://github.com/anupcowkur/MVPSample/blob/master/app/src/main/java/com/anupcowkur/mvpsample/model/PostsAPI.java – Raghunandan
Ich dachte, RXJava hat einfache Caching-Ansatz "von Box" – Rainmaker
Es hat , aber Sie müssen die beobachtbare Referenz nach dem Aufruf von 'cache' speichern. – Than