私は異なるfilePath
と非同期に画像をロードするobservableを持っており、ビットマップ変数をキャッシュします。私はちょうど.cache
メソッドを追加しようとしましたが、それは役に立たなかった。どのようにmaの場合にキャッシュを達成するには?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
});
ビットマップはどこかに保存する必要があります。あるいは、グライドやピカソのような良い画像キャッシングライブラリを使用してください。キャッシュは、スクリーンローテーションの変更中にネットワーク操作を続行して(購読および購読中止)、ネットワークコールを再度防止する場合に便利です。 https://github.com/anupcowkur/MVPSample/blob/master/app/src/main/java/com/anupcowkur/mvpsample/model/PostsAPI.java – Raghunandan
私はRXJavaに "ボックスから"簡単なキャッシュアプローチがあると思った – Rainmaker
しかし、あなたは 'cache'を呼び出した後に観測可能な参照を保存する必要があります。 – Than