Я решил исследовать использование памяти своего приложения, и я посмотрел на монитор памяти Android Studio, а использование моей памяти составило около 68 МБ. Это выглядит слишком высоко для меня.Почему мой фоновый фолд приложения составляет 160 МБ во время выполнения?
Я открыл распределитель памяти и начал отслеживать с начала применения. Я видел, что есть выделение 49 МБ NonMovableArray
, которое является Bitmap
.
Я отлажена приложение и выяснил, что это был фон, я использовал. Ниже приведены строки из файла PhoneWindow.java
, вот где Android назначает фон на экран, который я считаю. Фоновый объект имел размер 49 МБ и разрешение 2625x4669.
У меня нет переопределения в моем приложении, и у меня есть один фон, который применяется ко всей теме.
У меня есть фоновый рисунок в drawable
папка в формате JPG с разрешением 750x1,334.
PhoneWindow.java
if (mBackgroundResource != 0) {
background = getContext().getDrawable(mBackgroundResource);
} else {
background = mBackgroundDrawable;
}
Я проверяю это на 6 устройства Motorola Nexus, который имеет 560 плотности с разрешением 1440 х 2560.
Есть две точки я не Понимаю.
- Если устройство имеет разрешение 1440x2560, почему мой фон будет преобразован в 2625x4669?
- Даже если это преобразование является лучшим сценарием для приложения, как получилось, что файл 160 КБ окажется 49 МБ?
Если вы, ребята, можете мне это объяснить, это было бы здорово. Благодаря!
Я уже решил эту проблему первый кладя мою вытяжку в «растяжимой-nodpi' папки (после просмотра ответа вам на другой вопрос), а затем создание различных чертежей для разных плотностей экрана. Я просто хотел понять, в чем причина этого, и вы очень хорошо объяснили. Спасибо! –