2016-06-05 3 views
1

Я разрабатываю небольшой тамагочи для школьного проекта, и у меня есть огромные проблемы с объемом памяти, которую использует приложение. Сначала у меня было 200 МБ, выделенное для приложения, и после небольшого исследования я получил легкое решение по сокращению его до 50 МБ, переименовав выпадающую папку в drawable-nodpi. Но это по-прежнему много. Изучая проблему, я уверен, что она имеет какое-то отношение к моим макетам и пользовательским интерфейсам, потому что я удалил весь свой код и запустил мое приложение только с помощью макета, а использование памяти не исчезло вообще.Использование высокой памяти в Android-приложении (50MB)

Здесь вы можете увидеть мой макет: App-Layout and Memory-Usage

изображающей размеры в среднем около 30KB, и если рассчитать максимальный размер возможных изображений в памяти у меня 1.5МБЫ.

Итак, откуда берется память? Как это вообще возможно?

Если вы хотите увидеть приложение самостоятельно, вы можете получить проект от GitHub: https://github.com/kruben95/TamaStudent

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

+0

Избегайте высоким разрешением изображения (~ 1920x1080p). они едят память, как сумасшедшую. – Vucko

ответ

3

Я скачал ваш проект, и вот несколько советов:

1) Изображения большого разрешения, даже если на диске они занимают 30-40 кб - в памяти они являются растровые и растровые занимает много памяти, для примерная часть тела - 1200x1980 пикселей с 4 байтами на пиксель, это 9,5 мегабайт в памяти !! ?? теперь после того, как это растровое изображение получилось, оно должно также масштабировать его - это дополнительная память, и, как вы видите, у вас более 10 мегабайт на одно изображение! это чрезвычайно ВЫСОКО.

2) сделать изображения более низкого разрешения. нет необходимости отображать их так высоко.

3) удалить из изображений невидимые части - так как я вижу очень большие части, ясны , но это память!

4) попытаться сделать какие-то образы программно, как круги и т.д.

5) в коде - не использовать альфа для просмотра, если вам нужно только сделать фон, установить этот альфа непосредственно в цвете: # 00FFFFFF - здесь белый цвет с альфой 0. Если вы используете альфа на просмотр, потребуется дополнительная память для перерисовки (более низкая производительность).

6) Google Интернет для связанных разделов с тегом Best practices и вы найдете много полезной информации)

+0

спасибо за объяснение. Попробуем их завтра и сообщаем о моих результатах. – kruben

+0

Теперь я заменил свои круги состояния на вложенную макет и круглые формы, так что у меня не только меньше использования памяти на 12 МБ, но и для каждого процента правильного отображения. До этого у меня было всего 10 изображений каждые 10 процентов. 2 летает с одним ударом (немецкая поговорка. Не знаю, существует ли это в egllish: D). Следующий шаг - это переработка других изображений и уменьшение разрешения. Примите ваш ответ. Еще раз спасибо :) – kruben

+0

Совсем нет, Добро пожаловать :) –

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