web-dev-qa-db-ja.com

Android PicassoLruCacheサイズの構成

プロジェクトでトレンドのピカソを使用していますが、ヒープをダンプしたので、次のようになります。昨日、ピカソで使用されているLruCacheに48Mが与えられました。

どうすればサイズを指定できますか?

注:読み込まれた画像は明らかに大きいです。

誰かがfit()またはcenterCrop()を思いついた場合、それらの関数が画像サイズを縮小することを読みましたよね?ただし、小さな画像をListViewにフルビューで表示しなければならない場合があります。

さて、これらの関数は縮小された画像をキャッシュしますか?

enter image description here

13
user4o01

デフォルトでは、ピカソはLRUに使用可能なヒープの1/7を使用します。これは「幸せな」部分であり、すべてのデバイスで十分に機能します。

カスタムインスタンスをPicasso.Builderに渡すことで、メモリキャッシュのサイズを構成できます。これは、最大サイズをとるLruCacheのインスタンス、またはCacheの他のインスタンスにすることができます。

Picasso p = new Picasso.Builder(context)
    .memoryCache(new LruCache(24000))
    .build();

ただし、このキャッシュサイズを縮小する前に、BitmapインスタンスをRAMに保持すると、すぐに表示できることを覚えておいてください。未使用RAM is無駄なRAM。メモリキャッシュは、OOM(明らかに)や不要なGCがスペースを解放することなく、できるだけ多くのRAMを使用する必要があります。

50
Jake Wharton

以下のコードは、Picassoキャッシュサイズを250MBに増やします。

Picasso picasso =  new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);
4
Praveen