2015-10-05 4 views
1

Если я создаю пустой новый проект и запускаю его, он использует 23 МБ памяти.Android Studio - новый проект использует более 20 МБ памяти

Если я добавлю одно изображение размером 540x960 на фон макета, он использует 47 МБ памяти.

Если я добавляю кнопку изображения с фоновым изображением на ней, она использует 64 МБ памяти.

Это продолжается, если я добавляю вещи, и это слишком много. В приложении, над которым я сейчас работаю, у меня есть память размером от 180-210 МБ. Я подумал, что что-то не так, как я делал с загрузкой изображений, поэтому я положил их на imgur и загрузил их с помощью Glide. Это уменьшило память на небольшую сумму, а также не объясняет, почему новый пустой проект будет использовать 23 МБ.

Я думал, что может быть какая-то настройка, но я снова установил с настройками по умолчанию и все еще получаю проблему.

+1

«он использует 23MB памяти» - пожалуйста, объясните, что вы используете, чтобы измерить. – CommonsWare

+0

Насколько велико фоновое изображение вашей кнопки? – Buddy

+0

Я использовал вкладку «Память» внизу под Android Monitor. Размер фона кнопок был примерно таким же, как на заднем плане. Думаю, 970x360. Ответ Sled ниже работал, чтобы довести память до 26 МБ. – nworbkcin

ответ

1

У меня возникла аналогичная проблема, когда я помещал выведенную в неправильную папку разрешения, особенно стандартная «выталкиваемая» папка - это ловушка, поскольку предполагается, что она содержит изображение в разрешении «mdpi», поэтому изображение становится масштабированным, как сумасшедший на устройствах xxhdpi.

Простой тест, чтобы понять это, переместите изображения в папку под названием «drawable-nodpi» и проверьте потребление памяти.

Затем убедитесь, что вы предоставили изображение в правильном разрешении в выделенных папках и избегаете «рисованной» папки для изображений, просто используйте его для рисования xml.

Что в принципе происходит, если вы помещаете свое изображение «540x960» в стандартную папку с возможностью перемещения, предполагается, что это mdpi, если вы просматриваете его на относительно современных устройствах «xxhdpi», изображение становится масштабированным в 3 например, это будет «1620x2880» и, следовательно, потребляет гораздо больше памяти.

http://developer.android.com/guide/practices/screens_support.html

+0

Это сработало, спасибо! Это привело к экономии памяти до 26 МБ, добавив только 3 МБ памяти для этих двух изображений. Видя, как в моем фактическом проекте у меня есть 50+ изображений, я чувствую, что он все еще будет использовать гораздо больше памяти, чем предполагалось. Вы знаете, нормально ли 23 МБ в пустом проекте? – nworbkcin

+0

не беспокоиться о 26 МБ, изображения не будут проблемой, поскольку память будет переработана, когда вы используете ListView/GridView и т. Д. В длинном списке изображений активно будут отображаться только видимые или близкие к видимым ОЗУ. Просто убедитесь, что вы предоставили изображения в правильном разрешении для правильных устройств, то есть вы не хотите показывать это изображение 540x960 на устройстве ldpi, например. Преждевременная оптимизация - это корень всего зла;) – sled

+0

зависит, если все изображения видны, то есть относительная компоновка просто заполняет экран, тогда это нормально, но если относительный макет намного больше, чем экран, то есть свитки, то это плохой выбор, потому что только прокрутка не будет перерабатывать изображения. Возможно, вы можете использовать GridView и спроектировать адаптер так, чтобы он возвращал пустые элементы в определенных местах, чтобы вы могли получить шестиугольник. – sled

Смежные вопросы