プロジェクトでトレンドのピカソを使用していますが、ヒープをダンプしたので、次のようになります。昨日、ピカソで使用されているLruCache
に48Mが与えられました。
どうすればサイズを指定できますか?
注:読み込まれた画像は明らかに大きいです。
誰かがfit()
またはcenterCrop()
を思いついた場合、それらの関数が画像サイズを縮小することを読みましたよね?ただし、小さな画像をListView
にフルビューで表示しなければならない場合があります。
さて、これらの関数は縮小された画像をキャッシュしますか?
デフォルトでは、ピカソは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を使用する必要があります。
以下のコードは、Picassoキャッシュサイズを250MBに増やします。
Picasso picasso = new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);