用RXJava缓存可观察。 Android
问题描述:
我有一个observable异步加载一个图像与filePath
不同,我想缓存位图变量。我试图添加一个.cache
方法,但它没有帮助。如何在ma case中完成缓存?用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
});
答
使用Glide
或Picasso
及其内置缓存功能,并考虑使用WeakReferences来存储这样的位图。
答
你的意思是在你显示的代码之后使用位图变量吗?如果你不使用它,你应该拨打Bitmap.recycler()
。
您需要在某处存储位图。或者可能使用像glide或picasso这样的好图像缓存库。如果要在屏幕旋转更改(订阅和取消排序)期间继续网络操作以防止再次发生网络呼叫,则缓存有用。 https://github.com/anupcowkur/MVPSample/blob/master/app/src/main/java/com/anupcowkur/mvpsample/model/PostsAPI.java – Raghunandan
我以为RXJava拥有简单的缓存方法“from box” – Rainmaker
它拥有,但是你需要在调用'cache'后存储可观察的引用。 – Than