ほとんどが特定のビジネスのディレクトリになる小さなアプリを構築しています。すべては REST サービスを通じて取得されます。ビジネスのリストを閲覧しているときに、画像の処理に問題があります。
各リスト項目を構成する画像は、背景 (ビジネスの「バナー」として機能) と、ビジネスが提供する最も重要なサービスを表す最大 5 つの小さなアイコンです。
私は Picasso を使用してこれらの画像を非同期的にロードし始めました。これは、独自のキャッシュを作成しないようにするためです。ただし、いくつかの問題が発生しました。
A) 最大の問題は、ローエンドの電話 (Android 2.2 を実行している LG Optimus V) で、背景/バナーが常にロードに失敗することです。背景の読み込みに失敗したときに Picasso の error() オプションを使用してプレースホルダー ドローアブルを読み込みますが、すべての背景が読み込みに失敗し、その理由がわかりません。これについて私が気づいたこと:
- 小さなアイコンは問題なく読み込まれます
- Picasso からの onImageLoadFailed コールバックは、実際にはトリガーされません。しかし、error() で指定したプレースホルダーは読み込まれます。
- リモートではなくローカルにある場合、これらのバナー (同じアセット サイズ) を完全にロードできるため、メモリは問題ではないようです。
- この問題は、2.3 を実行している Droid X といくつかのハイエンド デバイスでは発生しません。
B) すべてのデバイスで、サービス アイコンもバナーもディスクにキャッシュされないように見えます (Picasso デバッグ モードでは、常に最初にリモート ソースから読み込まれ、その後メモリから読み込まれることを示します)、Picasso はこれを自動的に行うことになっています。設定が不足しているかどうかはわかりません。
実際、サービス アイコンは、リスト (ビジネス) アイテム間で頻繁に繰り返されるため、アプリの開始時にプリフェッチできれば最適です。可能なサービスのリストはいつでも増加する可能性があり、そのため、より多くのアイコンが定期的に発生するため、ローカル アセットにすることはできません。しかし、アクティビティの開始時に、サービスのリストを照会し (そのための REST ポイントが既にあります)、すべてのアイコンをプリフェッチしてキャッシュできれば素晴らしいと思います。これを行う「簡単な」方法はありますか?
これらの問題についてご指導いただきありがとうございます。