2015-12-14 1 views
0

Я получаю когда-нибудь эту ошибку в моем проекте. Но почему? Im действительно новый в программировании для Android, вы можете мне помочь? Я не знаю, почему я получаю эту ошибку.Android: OutOfMemoryError: Не удалось выделить выделение 36000012 байтов с 16777120 бесплатных байтов и 28 МБ до тех пор, пока OOM

12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime: FATAL EXCEPTION: main 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime: Process: com.cgame.angebotliste, PID: 32649 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 36000012 byte allocation with 16777120 free bytes and 28MB until OOM 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:741) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:562) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1014) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.content.res.Resources.loadDrawableForCookie(Resources.java:3702) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.content.res.Resources.loadDrawable(Resources.java:3575) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.content.res.Resources.getDrawable(Resources.java:1848) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.content.res.Resources.getDrawable(Resources.java:1814) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at com.squareup.picasso.RequestCreator.getPlaceholderDrawable(RequestCreator.java:676) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at com.squareup.picasso.RequestCreator.into(RequestCreator.java:664) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at com.cgame.angebotliste.BeichteShow_Adapter.loadImageFromUrl(BeichteShow_Adapter.java:199) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at com.cgame.angebotliste.BeichteShow_Adapter.onBindViewHolder(BeichteShow_Adapter.java:100) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at com.cgame.angebotliste.BeichteShow_Adapter.onBindViewHolder(BeichteShow_Adapter.java:42) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333) 
12-14 16:45:18.172 32649-32649/com.cgame.angebotliste E/AndroidRuntime:  at 
+0

«Но почему?» - потому что вы пытаетесь выделить очень большой блок памяти (~ 35 МБ). У вас не будет такого большого блока памяти на большинстве устройств. Выбранный placeholder слишком большой и, вероятно, находится в неправильном каталоге. – CommonsWare

+0

Ошибка возникает, когда я делаю http-вызов одним намерением и после этого переадресации вызовов очень быстро переходит в другое намерение с помощью recyleview. Все мои изображения имеют размер ~ 50 КБ. У меня нет изображения с более чем 34 МБ. –

+0

«Ошибка приходит ...» ... во всех ситуациях. Вы * служите *, чтобы это повторялось таким образом, но будут другие. «Все мои изображения имеют размер ~ 50 кб» - предположительно, вы имеете в виду размер на диске. Важен размер декодированного размера в памяти, который будет в 10-30 раз больше плюс любое масштабирование, которое выполняется из-за разной плотности (ресурс по сравнению с устройством). – CommonsWare

ответ

0

Вы пытаетесь загрузить очень большое изображение:

BeichteShow_Adapter.loadImageFromUrl(BeichteShow_Adapter.java:199)

вы должны масштабировать его вниз, Есть много вопросов на SO для этого, а именно:

OutOfMemory when loading large Background Image

+0

все изображения имеют размер ~ 50kb. Является ли 50 кбит/с для Recycleview с 100 изображениями? –

0

Я рекомендую использовать Glide или Fresco для загрузки изображений. Эти libarries будут автоматически обрабатывать эти крайние случаи для вас.

+0

i becom эта ошибка также с glide, nostra13 :( –

0

У меня была такая же ошибка, и я исправил ее, перезапустив амулятор. это решение не работает в каждом случае, потому что в моем случае другой проект работал на амультаторе, даже я отобразил другой проект.

с некоторыми исследованиями я обнаружил, что иногда (я не знаю, почему) карты приложения не закрывают его и продолжают показывать на телефоне или эмуляторе.

Возможно, это помогает.