0

MySQL データベースから Android アプリケーションに約 200 枚の画像をロードしています。それらをすべてビットマップとビットマップの ArrayList に格納しようとすると、すぐにメモリ不足の例外が発生します。

これらの画像を保存する最良の方法を知りたいです。それらをすべてSDカードに保存し、それらへのパスのみをアプリに保存できました。

しかし、これらの画像を常に ViewPager のページに表示する必要もあります (1 ページあたり約 8 個の画像が表示されます)。ViewPager にリソースからの画像を入力すると、Android と ViewPager がメモリの問題自体を管理します (メモリが不足すると表示されていない画像を RAM から削除し、スクロールして戻るとそれらを再度読み込みます)。

メモリを使い果たすことなく、非常に多くの画像を保存するにはどうすればよいですか?

4

2 に答える 2

1

利用可能なメモリが限られているため、各画像を直接参照することはできません。そうしないと、メモリが不足すると言われています。オブジェクトへの参照がある限り、これらの画像はメモリ内のスペースを占有しBitMapます。このメモリを解放するには、これらを逆参照するBitMapsか、ArrayList. 理想的には、現在表示されている画像、または次に表示される画像のみを参照する必要があります。

ページ ビューごとに 8 つの画像を検索するか、周囲のページ ビューの画像を検索するだけです。表示している画像が占めるサイズよりもはるかに大きい場合、これらの画像のサイズをその場で変更し、表示されるサイズでのみ保存することをお勧めします。これは、画像のメモリ フットプリントを削減するのにも役立ちます。

于 2012-12-18T20:48:05.517 に答える
1

Android 開発者は、このトピックに関する一連のチュートリアルを作成しています: http://developer.android.com/training/displaying-bitmaps/index.html

于 2012-12-18T22:57:27.403 に答える