Я занимаюсь разработкой игры, в которой используется действие с растровым изображением из изображения размером 2000x2000 пикселей.
В моем HTC Hero при запуске упражнения я использую 12 МБ.
Однакоесли я пытаюсь запустить приложение в любом эмуляторе с кучей 16 МБ, происходит сбой виртуальной машины из-за ошибки OutOfMemoryError, пытающейся выделить 16,4 МБ;как это возможно?
Я тоже пытался с другим эмулятором и использовал 20 МБ.
Для измерения объема памяти я использую это:
int usedMegs = (int) (Debug.getNativeHeapAllocatedSize() / 1048576L);
String usedMegsString = String
.format(" - Memory Used: %d MB", usedMegs);
getWindow().setTitle(usedMegsString);
Почемунужно ли одному и тому же растровому изображению 12MB в HTC Hero и 20MB в других устройствах?
Редактировать: Я понял, что это причина плотности.Плотность 1 = 12 МБ, Плотность 0,75 = 8 МБ и Плотность 1,5 = 20 МБ (не совсем, некоторые МБ из других видов деятельности)
Можно ли сказать устройству 1,5 плотности, чтобы использовать 1 для декодирования растрового изображения ???
Редактировать 2: у меня было изображение в / drawable, поэтому, когда я загрузил его с 1,5, было сделано больше.Если я помещу изображение в / drawable-hdpi, ему потребуется меньше памяти (12 МБ), поскольку оно не масштабируется.