最新のバージョン2.71828の場合これが答えです。
Q1:ローカルディスクキャッシュはありませんか?
A1:Picasso内にはデフォルトのキャッシュがあり、リクエストフローは次のようになります
App -> Memory -> Disk -> Server
彼らが最初に彼らのイメージに会ったところはどこでも、彼らはそのイメージを使い、それからリクエストフローを止めます。応答フローはどうですか?心配しないで、ここにあります。
Server -> Disk -> Memory -> App
デフォルトでは、拡張キーピングキャッシュ用に最初にローカルディスクに保存されます。次に、キャッシュ、インスタンスの使用のためのメモリ。
これを有効にすると、ピカソの組み込みインジケーターを使用して、画像が形成される場所を確認できます。
Picasso.get().setIndicatorEnabled(true);
写真の左上にフラグが表示されます。
- 赤い旗は、画像がサーバーからのものであることを意味します。(最初のロードではキャッシングなし)
- 青い旗は、写真がローカルディスクからのものであることを意味します。(キャッシング)
- 緑のフラグは、画像がメモリからのものであることを意味します。(インスタンスキャッシュ)
Q2:同じイメージを複数回使用するため、ディスクキャッシュを有効にするにはどうすればよいですか?
A2:有効にする必要はありません。これがデフォルトです。
あなたがする必要があるのはあなたがあなたのイメージを常に新鮮にしたいときそれを無効にすることです。無効化されたキャッシングには2つの方法があります。
- NO_CACHEまたはNO_STORE、あるいはその両方に設定
.memoryPolicy()
すると、フローは次のようになります。
NO_CACHEは、メモリからの画像の検索をスキップします。
App -> Disk -> Server
NO_STOREは、最初のイメージのロード時に、イメージをメモリに保存しません。
Server -> Disk -> App
- NO_CACHEまたはNO_STORE、あるいはその両方に設定
.networkPolicy()
すると、フローは次のようになります。
NO_CACHEは、ディスクからの画像の検索をスキップします。
App -> Memory -> Server
NO_STOREは、最初のイメージのロード時に、イメージをディスクに保存しません。
Server -> Memory -> App
イメージを完全にキャッシュしない場合は、どちらも無効にできません。例を示します。
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
完全にキャッシュも保存もないフローは次のようになります。
App -> Server //Request
Server -> App //Response
そのため、アプリのストレージ使用量を抑えるためにもこれが必要になる場合があります。
Q3:Androidマニフェストファイルにディスクアクセス許可を追加する必要がありますか?
A3:いいえ。ただし、HTTPリクエストにINTERNET権限を追加することを忘れないでください。