2016-02-22 8 views
0

Я пытаюсь создать приложение с фрагментом, который отображает два ImageButtons. Изображения загружаются через XML с таким кодом:Android Studio Fatal Exception: java.lang.OutOfMemoryError: Не удалось выделить память

<ImageButton 
... 
     android:id="@+id/image_button_lab" 
     android:background="@drawable/lab" 
.../> 

и

<ImageButton 
... 
     android:id="@+id/image_button_wild" 
     android:background="@drawable/wild" 
.../> 

Первая картина лаборатории и другая картина тигра. Обе фотографии - 1080 x 1080 квадратных изображений .jpeg.

Когда я запустить приложение и запустить этот фрагмент, я получаю следующее сообщение об ошибке (укороченной :)

E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.umutberk.test,PID: 2959 
java.lang.OutOfMemoryError: Failed to allocate a 41990412 byte allocation with 4194304 
free bytes and 22MB until OOM 

Я пытался добавить;

dexOptions 
    { 
     incremental true 
     javaMaxHeapSize "4g" 
    } 

... моему сегменту android {...} в файле build.gradle.

Также попытался увеличить объем оперативной памяти VD до 4 ГБ, создав новый VD с распределением RAM 4 ГБ, а также запустить APK на моем LG G4, и он падает независимо от того, что.

Просмотренные в учебнике официальной документации для Android Studio «Эффективные загрузочные битмапы», а moethod - это не то, что я пытаюсь сделать. Я просто пытаюсь загрузить изображения из «@ drawable /» в качестве фона моих кнопок ImageButtons. Любая помощь будет оценена!

(PS: Это работает, когда я изменить «@ Drawable/изображение» на «#ffffff» для андроида:.. Фон Так что я уверен, что он должен делать с этими двумя изображениями)

Также полная ошибка сообщение здесь: http://pastebin.com/ZiegMfpB

ответ

1

Проблема не в этих конкретных распределениях. 2 изображения этого размера являются полуразмерными (полу, потому что 2 снимка, которые не будут оба одновременно помещаться на экране, так почему бы не загружать по одному по мере необходимости). Проблема в том, что все ваши распределения вместе слишком велики. Посмотрите на утечки или память, на которые вы держитесь, это не нужно держать, особенно растровые изображения. Я бы использовал кучу кучи, чтобы увидеть, есть ли слишком много некоторых объектов.

Кроме того, увеличение объема оперативной памяти до 4 ГБ не будет работать - все устройство не имеет 4 ГБ. Это телефоны, а не компьютеры (у адских компьютеров не было этого 4 года назад).

+0

Хм, я понимаю, что вы говорите, любопытно. Я попытался загрузить одно изображение, и он все еще слишком много, и приложение вылетает. Я не уверен, что знаю, как искать утечки памяти и настраивать кучу кучи, но я буду изучать ее. – hope4tg