2017-09-23 21 views
-1

私はrecyclerviewでいくつかの画像を表示する必要があるAndroidアプリケーションを開発しています。私は一度に画像をダウンロードし、おそらくアンドロイドのキャッシュまたは内部ストレージに保存し、画像がストレージ内にある場合は内部ストレージから画像を表示し、サーバーからロードしてダウンロードしない場合は、Androidからサーバーから画像をキャッシュして表示するにはどうすればいいですか?

また、これらの画像をユーザーのギャラリーアプリに表示したくありません。

私はアーキテクチャを知りたいだけで、それを行う方法に関するコードではありません。

キャッシュメモリと内部ストレージには違いはありますか?また、キャッシュにイメージを保存する権限が必要ですか?

EDIT:

私の質問は、@Dimaによって提案されたものとは異なる、私は数える、その質問に彼は、画像をキャッシュしていないか、または内部ストレージに保存します。

+0

[画像を表示して表示する]の可能な複製(https://stackoverflow.com/questions/16789676/caching-images-and-displaying) –

答えて

-1

グライドは画像を非同期で表示するための素晴らしいライブラリです。

グライドのディスクキャッシュ戦略:のみDiskCacheStrategy.SOURCEキャッシュ:DiskCacheStrategy.DATA、グライド3.xの:

グライド4.xを議論したようにDiskCacheStrategy.NONEキャッシュなし、:

グライド3.xの& 4.xの元のフル解像度画像。上記の例では、1000x1000ピクセルの1つになります。

Glide 4.x:DiskCacheStrategy.RESOURCE Glide 3.x:DiskCacheStrategy.RESULT解像度を下げた後の最終イメージ(および場合によっては変換)をキャッシュします(Glide 3.xのデフォルトの動作)

グライド4.xの唯一:DiskCacheStrategy.AUTOMATICインテリジェントグライドの4.xのリソース(デフォルト動作)

グライド3.xのに基づいて、キャッシュ方式を選択&の4.x:画像のDiskCacheStrategy.ALLキャッシュすべてのバージョン 最後の例として、あなたがあなたが頻繁に操作して束を作ったことを知っているイメージを持っているならその異なるバージョンのものは、オリジナルの解像度のみをキャッシュするのが理にかなっています。したがって、我々は唯一のオリジナルを保つためにグライド伝えたい:

例:

グライド4.xの

GlideApp 
    .with(context) 
     .load(eatFoodyImages[2]) 
     .diskCacheStrategy(DiskCacheStrategy.DATA) 
     .into(imageView3); 

グライド3.xの

Glide 
    .with(context) 
    .load(eatFoodyImages[2]) 
    .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
    .into(imageViewFile); 

とキャッシュされたがされるとあなたのアプリのデータフォルダ内にあるので、ユーザギャラリーには表示されません。

関連する問題