アプリケーションに多くの画像を表示する必要があります。これらはjpgとpngであり、次のようにImageViews内にロードしています。
tile.setImageResource(R.drawable.tile_highlight);
現在、OutOfMemoryの問題が発生しています(java.lang.OutOfMemoryError: bitmap size exceeds VM budget
)
私は他のいくつかの投稿を検索して見つけましたが、それらはすべて、ImageViewのビットマップを手動でリサイクルする必要があることを示唆しています。たとえば、((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle();
メモリからダンプします。
しかし、私の場合、setBitmap()
ImageViewオブジェクトに画像をロードするために使用していないため、上記のコードを実行しようとするとNullPointerException
、メソッドgetBitmap()
はnullを返し、ビットマップはありませんか?!?!
コードに戻って、ImageViewsにすべての画像を読み込む方法を変更してから、メソッドを試す必要がありrecycle()
ますか?または、メモリを解放してクラッシュしないようにするにはどうすればよいですか?
編集
私はそのようなことを試みました:imageView.setImageResource(-1);
それがメモリから画像を削除し、それを... nullか何かに置き換えることを期待して、しかしそれは原因を助けないようです。