2013-10-05 3 views
5

Я пытаюсь загрузить растровое изображение в android imageView.java.lang.OutOfMemoryError при попытке загрузить растровое изображение в imageView

enter image description here

но получить этот java.lang.OutOfMemoryError

, как можно избежать этого?

10-06 00:11:21.225: E/AndroidRuntime(6825): FATAL EXCEPTION: main 
10-06 00:11:21.225: E/AndroidRuntime(6825): java.lang.OutOfMemoryError 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:650) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:722) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.provider.MediaStore$Images$Media.getBitmap(MediaStore.java:790) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at de.vogella.android.todos.MySimpleArrayAdapter.getView(MySimpleArrayAdapter.java:85) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.widget.AbsListView.obtainView(AbsListView.java:2452) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1250) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.widget.ListView.onMeasure(ListView.java:1162) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.view.View.measure(View.java:15481) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5107) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
10-06 00:11:21.225: E/AndroidRuntime(6825):  at android.view.View.measure(View.java:15481) 
+0

Недостаточно памяти, когда вы застреваете в бесконечном цикле. Это вряд ли будет связано с фактической загрузкой растрового изображения. Покажите нам свой код, где вы петли, хотя вещи. – Johan

+0

он падает сразу после того, как MyListAdapter возвращает следующий вид, и все работает, если я прокомментирую строку 'setImage' –

+0

: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html –

ответ

8

Это зависит от того, насколько велика ваше растрового изображения, Android, кажется, выделить немного больше места, чем размер изображения, когда вы читаете размер на вашем компьютере. Итак ...

  • Вы можете использовать только меньшее изображение.
  • Google фактически опубликовал руководство по избежанию OutOfMemoryErrors here, которое поможет много, хотя мне также пришлось использовать меньший размер изображения.
  • Один из методов, который почти наверняка будет работать, заключается в установке android:largeHeap="true" в вашем манифесте между вашими тегами приложения. Это увеличит размер вашей кучи, но может немного помешать вашему приложению.

Возможно, для вас комбинация этих идей будет работать.

+3

Руководство Google отлично. – agmezr

+0

Отличный google doc! Спасибо за ссылку! – Sjd

+0

Он работает для меня после добавления андроида: largeHeap = "true" –

Смежные вопросы