1. ホーム
  2. android

[解決済み] Android用ローカル画像キャッシュソリューション。Square Picasso、Universal Image Loader、Glide、Fresco?

2023-03-16 04:22:08

質問

Androidで非同期な画像読み込みとキャッシュを行うライブラリを探しています。Picassoを使おうと思っていたのですが、GitHubでUniversal Image Loaderの方が人気があることを知りました。この2つのライブラリについてご存知の方はいらっしゃいますか?長所と短所のまとめがあれば最高です。

(私の画像はすべてローカルディスクにあるので、ネットワークは必要ありません。したがって、Volleyが適合するとは思いません)

どのように解決するのですか?

2018年9月更新です。数年後、ローカル画像キャッシュソリューションにほぼ同じものが必要になりました。今回は、UILは積極的に開発されていません。私は人気のあるライブラリを比較し、結論はかなりノーブレーンです: Glideを使えばいいのです。Glideの方がずっと強力で、設定もしやすいからです。数年前、私はUILをフォークして変更を加えなければなりませんでした。Glideは、キャッシュ戦略やカスタムキーによる複数レベルの解像度キャッシュなど、私のすべてのユースケースをサポートしています。Glideを使うだけです!

Koushik Dutta の比較は、ほとんど速度ベンチマークのためのものです。彼の投稿は非常に基本的なことにしか触れておらず、ローカル画像に特化したものではありません。私が質問をした後、Picasso と UIL を使った私の経験を共有したいと思います。PicassoとUILはどちらもローカル画像を読み込むことができます。私は最初にPicassoを試して満足しましたが、その後、より多くのカスタマイズ オプションのためにUILに乗り換えることにしました。

Picassoです。

  • Picasso の流暢なインターフェイスは素敵です。しかし、"with", "into", "load" と飛び回るので、実際にはシーンの後ろに何があるのかわかりません。何が返されるのか混乱する。

  • Picassoでは、正確なターゲットサイズを指定することができます。これは、メモリの圧迫やパフォーマンスの問題がある場合に便利で、速度のためにある程度の画質をトレードオフすることができます。

  • 画像はサイズをキーにキャッシュされ、異なるサイズの画像を表示するときに便利です。

  • メモリキャッシュのサイズをカスタマイズすることができます。しかし、そのディスク キャッシュは http リクエストのためだけのものです。ローカル画像の場合、読み込み速度を気にするならば、サムネイル ディスク キャッシュがあると、毎回画像のために数 MB を読み込む必要がなくて良いです。Picassoには、サムネイルをリサイズしてディスクに保存するこの仕組みがありません。

  • Picassoはそのキャッシュインスタンスへのアクセスを公開しません。(最初にPicassoを設定したときに取得して、それを維持することは可能です...)。

  • リスナーから返されたビットマップに、非同期で画像を読み込みたいことがあります。Picassoには、意外にもそれがありません。

  • Picassoはホームページにいくつかの簡単な例があるだけで、高度な使い方をするためには順序のないjavadocを読み通す必要があります。

UILです。

  • UILはカスタマイズにビルダーを使用しています。ほとんどすべての設定が可能です。

  • UILでは、ビューに読み込むサイズを指定することはできません。ビューのサイズに基づいたいくつかのルールを使用します。Picasso のような柔軟性はありません。メモリフットプリントを減らすために低解像度の画像を読み込む方法がないのです。(編集: この動作は、ソースコードにImageSizeの引数を追加することで簡単に変更でき、ビューサイズのチェックを回避できます)

  • UILはカスタマイズ可能なディスクキャッシュを提供しており、これを使用して指定されたサイズのサムネイルをキャッシュすることができます。しかし、それは完璧ではありません。以下は の詳細です。 . (編集: もしあなたが速度を気にし、私の場合のように複数レベルのサムネイル キャッシュが必要な場合は、ソース コードを修正してディスク キャッシュに "memoryKey" を使用させ、サイズも考慮させることができます)

  • UIL はデフォルトで、異なるサイズの画像をメモリにキャッシュします。

  • UIL は、アクセス可能なバッキングメモリとディスクキャッシュを公開します。

  • UILは、ビットマップを取得したり、ビューにロードするための柔軟な方法を提供します。

  • UILはドキュメントが優れています。UILはGithubのページで詳しい使い方を教えてくれるし、リンクされたチュートリアルもある。

Picassoから始めることをお勧めします。もし、より多くのコントロールとカスタマイズが必要であれば、UILをお勧めします。