0

私はリストビューを持っており、クリックすると各リストビューアイテムがダウンロードされるギャラリー(30以上の画像を含む)を開きます(URLを使用)。次回の訪問時に画像を再ダウンロードしたくないし、画像を表示したいオフラインモードでリストをクリックすると。

私はSOでいくつかのリンクをたどりましたが、どのアプローチに従うべきかについて少し混乱しています。

  • 1> bytearrayを使用して、画像をsqlitedbに保存します。
  • 2>コンテキスト->getExternalCacheDir()を使用して、外部メモリに保存します(これは外部メモリのないデバイスでは機能しません)。
  • 3>次のリンクで提案されているようにSoftReferencesを使用します

http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html

オフラインモードでも機能する約1000以上の画像を処理するための最良のアプローチを教えてください。

4

1 に答える 1

1

1000枚の画像.....それらがサムネイルであることを願っています。

必要なものと、繰り返し使用される画像のみをキャッシュする必要があります。オプション 1 と 2 の両方とも、ストレージ スペースがある場合でも電話に依存します。スペースがない場合は、ディスクにあまりキャッシュしません。アプリがバックグラウンドに置かれて強制終了された場合、3 は画像を永続的に保存しません。キャッシュも削除されます。

アプリの内部の仕組みと要件を知らずに、ここで何が正しい決定であるかを言うのは困難です。

あなたが望むものに行くだけで、私はいくつかの解決策を選ぶと思います

外部ストレージがある場合はそれに書き込み、内部ストレージを使用しない場合は内部ストレージを使用し、内部に十分なスペースがない場合はソフト参照を使用します。

すぐに使用できるキャッシング ソリューションが自分のアプリに完全に適合することはなく、独自のキャッシュを作成することになることが常にわかっています。申し訳ありませんが、より良い答えを出すことができません。

PS。3 に注意しないと、ダウンロードしすぎて OutOfMemoryException が発生する可能性があります。

PPS。3 は RejectedExecutionException をスローすることもできます。これは、一度に開始される非同期タスクが多すぎるために発生します (たとえば、asynctask を介して画像を取得するリストビューをすばやくスクロールするなど)。

于 2012-09-24T20:21:59.300 に答える