Проблеми с паметта при фонови изображения въпреки малкия размер

Имам чифт фонови изображения както за вертикално, така и за хоризонтално оформление в моето приложение за Android. Те са jpeg изображения с общ размер от 236 KB комбинирано.

Все пак продължавам да ми липсва памет със съобщението за грешка "Out of memory on a 23047212-byte allocation".

Как мога да имам ресурс, изискващ 23 MB разпределение, като фоновите изображения са общо 236 KB?

Проблемът съществува само при използване на фонови изображения в моите дейности.


person Petter    schedule 01.09.2015    source източник
comment
Можете да настроите android large heap true във вашия маркер за приложение на манифест.   -  person IntelliJ Amiya    schedule 01.09.2015


Отговори (2)


Размерът на файла с изображение в KB не е пряко свързан с този проблем, но размерът на изображението в пиксели заедно с други фактори също. Така че, ако искате да намалите потреблението на памет, най-лесният начин би бил да използвате изображения с по-малки размери.

Този въпрос може да ви помогне:

Използване на паметта за фоново изображение на 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