Скиннинг моего приложения потребляет огромное количество Мб в собственной куче (намного больше, чем фактический размер изображения) - PullRequest
0 голосов
/ 12 октября 2011

Я использую скин в своем приложении и загружаю около 1,5 Мб изображений на некоторых мероприятиях.Это не должно быть проблемой ... 1,5 Мб + по умолчанию ~ 6 Мб для приложения при загрузке ... однако, все обстоит иначе.каждый png, который я загружаю в качестве макета в моем макете xmls, умножается как минимум на 10 от его фактического размера ...., я написал пример приложения, в котором ничего не было, кроме черного экрана, и загрузил его один раз, но на нем ничего нетполучил native-heap из 5.8Mb, а затем загрузил его с небольшим png 25Kb и угадайте, что .... 6.25Mb.Я загрузил свое приложение только с оболочкой, и оно началось с 14.5Mb !!!!!!!!

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

Это известная проблема с android?PNG файлы загружаются с гораздо большим размером внутри native-кучи?Есть ли решение, кроме моего текущего плана?

Спасибо.

1 Ответ

0 голосов
/ 12 октября 2011

PNG-файлы (как и многие другие форматы изображений, такие как JPEG) - это сжатые файлы, очень похожие на zip-файлы. Когда вы загрузите их в память, они будут распакованы и занять больше места, следовательно.

Сколько зависит от внутренней конфигурации изображения , по умолчанию ARGB8888, что занимает 4 байта на пиксель. Таким образом, потребление памяти зависит только от размера изображения, а не от размера файла на диске (который может быть очень маленьким. Например: растровое изображение 500x500 пикселей, состоящее из одного цвета, имеет хорошую степень сжатия) .

Примером изображения размером 500x500 пикселей является 500*500*4 bytes = 0.954 MB, что составляет почти один мегабайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...