Проблемы с памятью при работе с фоновыми изображениями, несмотря на небольшой размер

У меня есть пара фоновых изображений для вертикального и горизонтального макета в моем приложении для Android. Это изображения в формате jpeg общим размером 236 КБ.

Однако мне постоянно не хватает памяти с сообщением об ошибке "Out of memory on a 23047212-byte allocation".

Как я могу иметь ресурс, требующий выделения 23 МБ, с фоновыми изображениями, составляющими в общей сложности 236 КБ?

Проблема присутствует только при использовании фоновых изображений в моих действиях.


person Petter    schedule 01.09.2015    source источник
comment
Вы можете установить большую кучу android true в своем теге приложения манифеста.   -  person IntelliJ Amiya    schedule 01.09.2015


Ответы (2)


Размер файла изображения в КБ не имеет прямого отношения к этой проблеме, но размер изображения в пикселях также имеет отношение к другим факторам. Поэтому, если вы хотите уменьшить потребление памяти, проще всего использовать изображения меньшего размера.

Этот вопрос может помочь вам:

Использование памяти фонового изображения Android

person Udi Idan    schedule 01.09.2015
comment
Изображения 1067 × 600 и 600 x 1067, так что на самом деле не такие уж большие. Разве нельзя использовать фоновые изображения такого размера и больше? (в случае больших устройств). Любое более низкое разрешение, и они будут выглядеть ужасно. - person Petter; 01.09.2015
comment
Спасибо за ссылку. Размещение изображений в папке drawable-nodpi, похоже, решило проблему :) - person Petter; 01.09.2015

Другая проблема заключается в том, что Android не выпускает собственные массивы, используемые для данных изображений, автоматически, как это делается для других объектов Java во время GC. Имхо, вам нужно отслеживать количество рефов и выпускать их самостоятельно. Но только в том случае, если у вас постоянно много новых изображений. Что-то вроде очень длинного списка картинок или пользователей с аватарками. Или может быть ваш фон загружается снова и снова.

person Cynichniy Bandera    schedule 01.09.2015