0

環境:

6 つのタブを保持するメイン アクティビティがあり、各タブには 30 以上の画像を含むグリッドビューが保持され、いつでも約 8 つの画像が表示されます (各グリッドビューはスクロール可能です)。

これらの多くの画像を使用して、最新の 25 枚のみをキャッシュする単純なキャッシュ システムを実装しました。新しい画像を表示する必要があり、キャッシュにない場合は、/data/date ディレクトリからその画像をデコードし、キャッシュ内の最も古いエントリ。そして、最も古いエントリを上書きする前に、その上で Bitmap.recycle() を呼び出します。

問題:

ある時点で、25 枚以上の画像を表示した後、古い画像のリサイクルが開始されます。Image がキャッシュに存在しなくなったタブの 1 つに戻ると、GetView メソッドが画像を再度読み込みます。問題は、Gridview の最初のアイテムが GetView を呼び出し、残りの画像が呼び出されず、Gridview が既にリサイクルされているキャッシュされた画像を表示しようとすることです。

なにか提案を?このシナリオでビューを強制的に取得するか、イメージをキャッシュするスマートな方法ですか?

とても有難い

ありがとう

4

1 に答える 1

0

Android ImageView を拡張する独自の ImageView を作成することで、これを解決しました。次に、onDraw(Canvas canvas) メソッドをオーバーライドし、キャッシュがなくなった場合にキャッシュをリロードするロジックを追加しました。

ハッキーに見えます...しかし、望みどおりに機能しました。私に教えてくれる人がいるなら、私はそれよりもうまくやりたいと思っています。ありがとうございます!

于 2011-01-31T07:43:43.183 に答える