андроид, xhdpi - куча

У меня 15 изображений в drawable-xhdpi, каждое 800x800, в drawable-hdpi у меня те же изображения, но 600x600, когда я запускаю приложение на устройстве с разрешением hdpi, размер кучи составляет около 3 МБ, но когда я запускаю его на устройстве с разрешением xhdpi размер кучи превышает 40 МБ, и у меня заканчивается память? Что не так? Изображения слишком большие?

размер кучи: ldpi: ~3 Мб mdpi: ~3 Мб hdpi: ~3 Мб xhdpi: ~40 Мб

Загрузите изображение таким образом:

 b1 = BitmapFactory.decodeResource(getResources(), R.drawable.image);
 imageview.setImageBitmap(b1);

then in OnBackPressed() b1.recycle()

person aptyp    schedule 22.10.2012    source источник
comment
Не могли бы вы использовать imageview.setImageResource(R.drawable.image) вместо этого? Таким образом, вам не придется беспокоиться об утилизации растровых изображений.   -  person Scott W    schedule 23.10.2012
comment
Я предполагаю, что вам нужно будет больше рассказать о своем приложении (что вы делаете с этими изображениями, сколько их отображается одновременно и т. д.) и, возможно, еще немного кода, чтобы продвинуться дальше. Разве то, что вы показали до сих пор, действительно все, что вы делаете?   -  person Scott W    schedule 23.10.2012
comment
Есть 15 изображений *.png (прозрачных), и каждое изображение расположено на предыдущем изображении, это похоже на стек. Когда я нажимаю на изображение, я меняю видимость на исчезнувшую. Вот и все ;) каждый файл xhdpi весит 80 КБ, hdpi: 60 КБ   -  person aptyp    schedule 23.10.2012
comment
вы нашли какое-нибудь решение... я тоже столкнулся с той же проблемой в моем приложении... также вы можете значительно уменьшить размер png с помощью этого онлайн-инструмента... tinypng.org   -  person Shashank Degloorkar    schedule 21.11.2012


Ответы (1)


Об этом уже спрашивали много раз... Реальная память, используемая для растрового изображения при загрузке, равна H x W x 4. 800 * 800 * 4 * 15 = 38 МБ. Вы никогда не должны загружать все 15 изображений одновременно. Поскольку они размером примерно с экран, повторная выборка в этом случае не имеет смысла, вам просто нужно выяснить, как обойти это, не загружая их все одновременно.

person dmon    schedule 22.10.2012
comment
Мне нужно загрузить их одновременно. А как насчет свг? - person aptyp; 23.10.2012
comment
Ну нельзя :) Как насчет объединения их в конечный результат, который вы хотите? - person dmon; 23.10.2012