11

私はAndroidアプリケーションに取り組んでいます。リストビューを含むアクティビティがあります。

リストビューには多くのアイテムがあり、それぞれにビットマップイメージが含まれています。

リストは非常に大きく、多くの画像が含まれているため、ビットマップをロードするときに、一部の古いデバイスでメモリ不足エラーが発生します。

だから私は古いデバイスのために次のことをする方法を探しています:

  • ビュー内(またはビューの近く)にあるアイテムのビットマップをロードします
  • ユーザーが下にスクロールすると、表示されるはずのビットマップをロードし、現在非表示になっているビットマップを削除します。
  • したがって、いつでもビュー(またはその近く)にある画像のみがヒープにロードされ、他の画像はビューに存在しなくなったときに削除されます。

それを行う方法はありますか?

追加情報:

私はビットマップ画像を効率的にロードする方法(Androidのドキュメントと私が見つけたサイト)に関するすべての指示とコードに従いました。また、メモリリークがないことを確認し、すべてのビットマップをリサイクルして、GCが正しく機能することを確認しましたそして最後に、古いデバイスでは、画像の解像度を可能な限り最小にしました。ただし、リストのサイズが原因で、一部のデバイスではメモリ不足が引き続き表示されます。

だから私は上記の提案された解決策を実行できるかどうかを知りたいと思っています。

助けてくれてありがとう

4

3 に答える 3

0

Universal Image Loaderのようなライブラリを使用すると、イメージのキャッシュとメモリ管理のオプションが提供されます。それを介して最大キャッシュサイズを設定できるはずであり、バックグラウンドスレッドでの画像の読み込みも処理します.

ListView は、画像を入れたビューをリサイクルし、その点でメモリを節約します。

于 2013-01-09T16:37:10.257 に答える
0

「遅延読み込み」のチュートリアルと例を検索したいとします。
考えられる例の 1 つ: https://github.com/thest1/LazyList

于 2013-01-09T15:25:19.220 に答える