4

Android リストビューでリスト イメージとリスト アイテムの遅延読み込みを正常に実装しました。Android 4.0+ と Java 7 を使用しています。

私が従ったアルゴリズムは次のとおりです。

  1. ユーザーがリストをスクロールすると、リスト データ (画像 URL を含む) がインターネットからダウンロードされます。

  2. スクロール状態がアイドルの場合、リスト イメージが読み込まれます。

  3. バックグラウンド スレッドでは、最初に画像がキャッシュ内でチェックされます。キャッシュに存在しない場合は、ダウンロードされてキャッシュに保存されます。

  4. 最後に、リストビューでイメージが imageview に設定され、アダプターに通知されます。

唯一の問題は、ビットマップをリサイクルするタイミングが明確でないことです。多くの場所で bitmap.recyle() を使用しようとしましたが、次のエラーが発生しました:

java.lang.IllegalArgumentException: リサイクルされたビットマップを描画できません

ここに膨大なコードを追加することはできません。また、プライバシーの問題もあります。誰かがこれについて私を助けてくれますか?

編集

アプリケーションのサイズが 727 KB (インストール時) から 14 MB に増加します。ビットマップをリサイクルした後、アダプタの getView() で「ビットマップからテクスチャを生成できません」と表示されます。誰かがそれを取り除く方法を提案できますか?

4

3 に答える 3

2

ビットマップをリサイクルすると、使用できなくなります。完全に使い終わったら、リサイクルしてください。あなたの場合、それはキャッシュから追い出された後を意味します。また、既存のビューがそれを参照していないことを確認する必要があります。

于 2013-08-14T20:34:13.733 に答える
0

ICS の時点では、リサイクルの必要はありません。必要な場合がいくつかありますが、ほとんどのリストビューの実装を考慮すると、おそらく必要ないでしょう。

ビットマップの再利用に関する詳細については、Chet Hasse によるこのビデオをご覧ください。ビットマップが同じサイズであるとより効果的です。DevBytes: ビットマップの割り当て

于 2013-08-14T20:32:20.913 に答える