私はアンドロイドアプリケーションで作業しています。リストビューを含むアクティビティがあります。リストビューアイテムは、ユーザーがスクロールしたときにメモリからビットマップを削除します
リストビューには多数のアイテムがあり、それぞれにビットマップイメージが含まれています。
リストが非常に大きく、ビットマップをロードするときに古いデバイスのメモリエラーが出ていて、多くのイメージが含まれているためです。
だから私は古いデバイスに対して次の操作を行うための方法を探しています:
- は、ビュー(またはそれに近い)にあるアイテムのためのビットマップをロードし
- ときにユーザーがスクロールダウン私は、表示されるはずのビットマップをにロードし、今すぐ非表示になっているビットマップを削除します。
- したがって、ビュー内(またはその近く)にある画像のみがヒープに読み込まれ、残りの画像はビューに表示されなくなったときに削除されます。
これを行う方法はありますか?
追加情報:
私は(アンドロイドドキュメントに、私は見つけることができる任意のサイト上で)効率的にビットマップイメージをロードする方法に関するすべての指示やコードに従ってきた、私はまた、何のメモリがないことを確認しましたリークが発生すると、すべてのビットマップをリサイクルし、GCが正しく動作していることを確認します。古いデバイスでは、イメージの解像度をできるだけ小さくしました。しかし、リストのサイズによって、メモリ不足が一部のデバイスで引き続き表示されています。
私は上記の解決策を実行できるかどうかを知りたいと考えています。あなたは「遅延ロード」のため、いくつかのチュートリアルと例を検索したい任意のヘルプ
ビューホルダーパターンを実装しようとしましたか? –