2017-04-13 21 views
-1

私は異なる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 
       }); 
+0

ビットマップはどこかに保存する必要があります。あるいは、グライドやピカソのような良い画像キャッシングライブラリを使用してください。キャッシュは、スクリーンローテーションの変更中にネットワーク操作を続行して(購読および購読中止)、ネットワークコールを再度防止する場合に便利です。 https://github.com/anupcowkur/MVPSample/blob/master/app/src/main/java/com/anupcowkur/mvpsample/model/PostsAPI.java – Raghunandan

+0

私はRXJavaに "ボックスから"簡単なキャッシュアプ​​ローチがあると思った – Rainmaker

+0

しかし、あなたは 'cache'を呼び出した後に観測可能な参照を保存する必要があります。 – Than

答えて

2

GlideまたはPicassoとその組み込みキャッシング機能を使用することも、そのようなビットマップを格納するためのWeakReferencesの使用を検討してください。

0

あなたの手段は、表示されたコードの後に​​ビットマップ変数を使用することですか?それを使用しない場合はBitmap.recycler()に電話する必要があります。

関連する問題