2016-11-08 7 views
-1

インターネットに接続するとフレスコ画をダウンロードしてSDカードに保存します。 後でオフラインにしてもキャッシュがクリアされても、保存された画像を表示するにはフレスコ画が必要です。 これは可能ですか?はいの場合、どうですか?フレスコ画を使用してオフラインでAndroidを表示すると画像が表示される

イメージをディスクキャッシュに保存するだけで、キャッシュがクリアされても動作しないようです。

答えて

1

Frescoが画像をキャッシュします。オフラインの場合でも、イメージは表示されます。何もする必要はありません。

しかし、キャッシュがクリアされたとき(ユーザーがボタンを押したときやデバイスの容量が少ないときなど)は、明らかに画像がキャッシュから削除されます。これは変更しないほうが望ましい動作です。

は、2つのオプションがあります:あなたが(例えば、「保存」ボタンを)選択した画像を保持したい場合は、エンコードを得ることができます

保存にキャッシュを移動し、選択した項目

を選択したアイテムを保存しますイメージを保存し、デバイスのどこかに保存します。 は、すべての画像でこれを行うべきではありません。それらはディスク上に2回あり、キャッシュをクリアする/アプリケーションをアンインストールするとデバイスに1つのコピーが残ります。

このような何かは仕事ができる:

DataSource<CloseableReference<PooledByteBuffer>> 
    dataSource = Fresco.getImagePipeline().fetchEncodedImage(imageRequest, callerContext); 
dataSource.subscribe(new BaseDataSubscriber<CloseableReference<PooledByteBuffer>>() { 
    @Override 
    protected void onNewResultImpl(DataSource<CloseableReference<PooledByteBuffer>> dataSource) { 
    CloseableReference<PooledByteBuffer> encodedImage = dataSource.getResult(); 
    if (encodedImage != null) { 
     try { 
     // save the encoded image in the PooledByteBuffer 
     } finally { 
     CloseableReference.closeSafely(encodedImage); 
     } 
    } 
    } 

    @Override 
    protected void onFailureImpl(DataSource<CloseableReference<PooledByteBuffer>> dataSource) { 
    // something went wrong 
    } 
}, executorService); 

}エンコードされた画像を取得するためにパイプラインを使用する方法について

詳細情報:キャッシュに

キープを移動http://frescolib.org/docs/using-image-pipeline.html

をキャッシュが外部ディレクトリに移動されたときにキャッシュが保持されることに注意してください。アプリがアンインストールされるとファイルを残します。

フレスコは、カスタムDiskCacheConfigを供給することができますし、あなたが新しいDiskCacheConfig.Builderを作成して、別のフォルダ(SDカード上の例1)へのパスを変更するsetBaseDirectoryPath(File)を呼び出し、あなたもsetBaseDirectoryName(String)とディレクトリ名を変更することができますすることができますフレスコは、キャッシングを行う方法について

詳細情報:http://frescolib.org/docs/caching.html

+0

あなたの答えをありがとう、しかし、ユニバーサルイメージLoa​​derは私の問題を解決しているようです。単にUILに ".cacheOnDisk(true)"パラメータを追加するだけで、私は必要なものを正確に実行します。 – Ashwin

+0

UILのディスクキャッシュは、アプリケーションの内部/外部キャッシュディレクトリではありませんか?キャッシュをクリアしても永続化されますか? –

+0

はい、UILを使用して一度ダウンロードしたイメージは、キャッシュをクリアしても保持されます。 – Ashwin

1

ダウンロードしたときにイメージを手動でディスクに保存する必要があります。画像を表示するときに、画像がディスクにあるかどうかを確認します。そうでない場合は、urlからダウンロードして(そしてディスクに保存します)。

関連する問題