2015-10-02 3 views
0
java.lang.OutOfMemoryError: Failed to allocate a 14400012 byte allocation with 5645520 free bytes and 5MB until OOM 
      at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
      at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
      at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:726) 
      at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:547) 
      at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1014) 
      at android.content.res.Resources.loadDrawableForCookie(Resources.java:3730) 
      at android.content.res.Resources.loadDrawable(Resources.java:3603) 
      at android.content.res.Resources.getDrawable(Resources.java:1852) 
      at android.content.Context.getDrawable(Context.java:408) 
      at android.view.View.setBackgroundResource(View.java:17228) 
      at alexcz.shapetest.Test.nextQ(Test.java:89) 
      at alexcz.shapetest.Test$1.onClick(Test.java:54) 

Ошибка ^^Android OutOfMemory ошибка ImageView

Ошибка возникает, когда какой-либо из событий OnClick срабатывают. Все остальные изображения появляются за исключением этих 2. Оба этих изображения не большие и около 600x600. В коде ошибка возникает при

nextq.setBackgroundResource(R.drawable.nextq); 
result.setBackgroundResource(R.drawable.correct); 

Заранее спасибо.

GitHub: https://github.com/alex578344/ShapeTestLogic

+0

«около 600x600» - вы уверены в этом? Размер распределения, который терпит неудачу, будет соответствовать примерно 600x6000. – CommonsWare

+0

Да, оба около 600x600 @CommonsWare –

+0

Считаете ли вы использование библиотеки управления изображениями, такой как Picasso? – WoogieNoogie

ответ

1
android:largeHeap ="true" 

не панацея, и самый последний метод оптимизации. Изучите this official guide, чтобы узнать больше.

Я рекомендую заменить ImageView на subsampling-scale-image-view. Это очень удобная и быстрая библиотека с совместимым интерфейсом ImageViewinterface. Он отправит изображение по частям, что исключает это исключение.

-1

Put largeHeap в вашем AndroidManifest.xml

<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/Test" android:largeHeap="true">

+1

Этот ответ типичный для новобранца - для отсрочки проблемы. – user2413972

+1

Предпочитайте не использовать его, если вы не знаете, что делает приложение, и что происходит в памяти. –

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