Как оптимизировать память на Android
Обновлено: 21.11.2024
Память Android и оптимизация производительности. В этом руководстве описывается, как оптимизировать использование памяти и оптимизировать производительность вашего приложения для Android. Учебное пособие основано на Android Studio.
1. Советы по программированию для создания высокочувствительных и быстрых приложений для Android
1.1. Почему вы должны быть осторожны с ресурсами Android
Устройства Android потребляют меньше энергии, чем стандартные настольные компьютеры или ноутбуки. По этой причине вы должны быть осторожны с потреблением памяти.
Особенно на устройствах Android до Android 5.0 вы хотите избежать срабатывания сборщика мусора виртуальной машины Java. Это приводит к зависанию среды выполнения Android примерно на 200 мс. Это может быть заметной задержкой, если пользователь, например, прокручивает список вниз.
1.2. Избегайте ненужного выделения объектов
Избегайте создания ненужных объектов, особенно в дорогих местах. Повторно используйте объекты, если это возможно. Создание ненужных объектов приводит к более частому запуску сборки мусора, и этого следует избегать.
Например, избегайте создания объектов в циклах или в методе onDraw() вашего пользовательского представления.
1.3. Используйте эффективные структуры данных
Android предоставляет несколько реализаций классов Sparse*Array. Рассмотрим следующий код.
Использование этого кода приводит к созданию ненужных объектов Integer.
Android предоставляет структуры данных, которые более эффективны для сопоставления значений с другими объектами. Если возможно, используйте эти объекты, они избегают создания объектов, как в случае использования HashMap. Создание объектов может быть дорогостоящим, и его следует избегать, чтобы уменьшить количество запусков сборщика мусора.
В таблице приведены примеры для SparseArrays.
Сопоставляет целые числа с объектами, избегая создания объектов Integer.
Сопоставляет целые числа с логическими значениями.
Сопоставляет целые числа с целыми числами
Чтобы улучшить приведенный выше пример, предпочтительнее использовать следующую структуру данных.
2. Работа с растровыми изображениями
Растровые изображения могут занимать много памяти, если загружаются в полном размере. Рекомендуется загружать в память растровые изображения нужного размера. Предположим, у вас есть приложение, отображающее изображение с разрешением 100 x 100 dp. Вам следует загрузить изображение именно такого размера.
Распространенный способ — сначала измерить растровое изображение, не загружая его с помощью флага, переданного в BitmapFactory .
После этого вы можете загрузить масштабированную версию изображения. Android действительно хорош в масштабировании изображений в степени двойки. Вы можете использовать следующий метод (из официальной документации Android) для расчета коэффициента масштабирования на основе 2.
Этот метод можно использовать для назначения изображения представлению, как показано в следующем примере.
3. Использование кэшей
3.1. Использование кеша
Кэш позволяет повторно использовать объекты, которые дорого создавать. Если вы загружаете объект в память, вы можете думать об этом как о кеше для объекта. Например, если вы загружаете изображения из Интернета, чтобы отобразить их в списке, вы должны хранить их в памяти, чтобы не загружать их несколько раз.
В какой-то момент вам нужно перезапустить некоторые из ваших объектов, иначе у вас закончится память. Хорошим подходом к этому является повторное использование объектов, которые дольше всего не использовались в вашем приложении.
Платформа Android предоставляет класс LruCache, начиная с API 12 (или в библиотеке support-v4). Класс LruCache предоставляет реализацию кэша _наименее недавно использованного кэша_ (кэш LRU). Кэш LRU отслеживает использование своих членов. Он имеет заданный размер, и если этот размер превышен, он удаляет элементы, к которым не обращались дольше всего. Это поведение показано на следующем рисунке.
В следующем примере кода показана возможная реализация класса LruCache для кэширования изображений.
Его использование простое и демонстрируется в следующем примере кода.
Для определения начального размера кеша рекомендуется определить размер на основе общего объема памяти, доступной на устройстве. Для определения доступной памяти вы можете использовать MemoryClass . Это демонстрирует следующий код.
3.2. Очистка кеша
Начиная с API 14 вы можете переопределить метод onTrimMemory() в компонентах Android. Этот метод вызывается системой Android с просьбой очистить память на случай, если системе Android потребуются ресурсы для процессов переднего плана.
Тем, кто пытается уменьшить использование оперативной памяти в Android, вероятно, трудно понять, как это сделать.Настоящего руководства о том, как это сделать, нет, и на то есть причины. Правда в том, что Google не хочет, чтобы вы постоянно очищали оперативную память.
В этом посте мы хотим показать вам лучшие способы избавиться от беспорядка, а также сообщить вам, почему большинству из вас, вероятно, не стоит даже беспокоиться об этом для начала. Приступим.
Следует ли уменьшить использование оперативной памяти в Android?
Давние споры продолжают оставаться одной из главных тем в сообществе Android. Это связано с тем, что мы привыкли к менталитету ПК, в котором меньшее количество приложений, работающих в фоновом режиме, обычно означает повышение производительности и более эффективное использование ресурсов. Чтобы понять, как работает Android, нужно сделать шаг назад и посмотреть на мобильную операционную систему с другой точки зрения.
Что такое оперативная память?
Оперативная память, также известная как оперативная память, — это место, где файлы временно сохраняются для немедленного использования. Операционные системы получат доступ к нему, чтобы легко и быстро получить доступ к временным файлам из приложений, которые используются в данный момент, независимо от того, используете ли вы их напрямую или они работают в фоновом режиме.
Почему сокращение использования оперативной памяти может навредить
Преимущество оперативной памяти заключается в том, что она позволяет интерфейсу работать более эффективно. Допустим, вы открываете приложение Facebook. При первом запуске потребуется некоторое время для запуска, так как он должен загрузить множество контента, чтобы показать вам. Затем вы можете выйти из приложения и вернуться к нему. При втором доступе к нему запуск займет гораздо меньше времени, так как он захватит все файлы из ОЗУ и использует то, что еще актуально.
Теперь представьте, что произойдет, если вы избавитесь от всех данных, хранящихся в оперативной памяти. Как и ожидалось, при повторном открытии приложения работа будет работать медленнее, чем если бы вся эта информация была доступна операционной системе.
Почему снижение использования оперативной памяти может даже не помочь
Для большинства из нас оперативная память работает загадочным образом. Мы не можем рассказать вам об этом в одном посте, но мы можем сказать вам, что попытка контролировать оперативную память иногда может привести к потере времени. В конечном итоге Android сделает все, что захочет.
Android довольно умен. Он знает, какие данные ему нужны, когда они нужны и как долго они ему нужны. Если приложение бездействует слишком долго, операционная система узнает, что нужно очистить его данные. Аналогичным образом Android удаляет старые файлы из оперативной памяти, когда новым требуется место.
Кроме того, очистка оперативной памяти может превратиться в бесконечную войну между вами и операционной системой. Если Android продолжает загружать данные в оперативную память, это потому, что они, вероятно, нужны ему по той или иной причине. Убейте его, и операционная система останется в недоумении: «Эй, куда делся этот файл? Давай положим его обратно». Затем вы снова убьете задание, и танец будет продолжаться бесконечно. При этом вы также потратите много энергии батареи.
Как уменьшить использование оперативной памяти в Android
Вы все еще хотите очистить это место в оперативной памяти? Для этого есть несколько причин, хотя они применимы к очень небольшому количеству случаев и отдельных лиц. Приложения могут выйти из-под контроля, или система может работать ненормально, что приведет к задержке, ошибкам и другим сбоям. Вот почему время от времени полезно очищать оперативную память.
Тогда у вас есть приложения, которые просто бесполезны, иначе называемые вредоносными программами. Предварительно установленные приложения оператора связи и производителя обычно не нужны. К сожалению, вы часто не можете удалить их, потому что Google помещает их в систему. К ним относятся глупые игры, спортивные приложения, навигаторы и другие «инструменты».
Если вы все еще хотите очистить оперативную память или устранить некоторые ошибки, вот лучшие способы уменьшить использование оперативной памяти в Android.
Уменьшите использование оперативной памяти с помощью диспетчера приложений
На всех устройствах Android есть диспетчер приложений (также известный как "Приложения"). Он находится в приложении «Настройки», и доступ к нему на большинстве устройств отличается, поэтому мы не можем точно пройти пошаговое руководство. Тем не менее, вы можете найти его и управлять определенными приложениями оттуда.
Если вы видите, что нежелательное приложение продолжает беспричинно занимать место в ОЗУ, просто найдите его в Диспетчере приложений и откройте его параметры. Вы можете удалить приложение из этого меню. Если удалить его невозможно, вероятно, его можно отключить.
Уменьшите использование оперативной памяти с помощью переключателя приложений
Чтобы получить менее техническое и более доступное решение, используйте переключатель приложений, доступ к которому можно получить с помощью кнопки навигации "Последние приложения". Это одна из трех кнопок навигации Android. Пользователи более новых устройств и версий Android теперь могут использовать жесты. Чтобы получить доступ к последним приложениям, просто проведите пальцем вверх от нижней части экрана и удерживайте его.
Зайдите туда и смахните ненужные приложения, чтобы закрыть их. Некоторые скины производителей Android позволяют закрывать все приложения одной кнопкой.
Старайтесь избегать таск-киллеров
Мы советуем вам избегать тасккиллеров, так как они в основном приносят больше вреда, чем пользы по причинам, упомянутым выше. Если какое-то приложение вас действительно беспокоит и вам нужно его использовать, у нас есть статья о наших любимых вариантах. Нажмите на ссылку ниже, чтобы увидеть доступные варианты.
Смартфоны прошли долгий путь, и с каждым годом их производительность растет. Некоторые смартфоны оснащены 12 ГБ оперативной памяти, и это много, больше, чем нужно обычному пользователю. Тем не менее, некоторые смартфоны по-прежнему имеют меньше памяти, что со временем замедляет их работу. Если ваш смартфон зависает или время от времени зависает, есть кое-что, что вы можете сделать, чтобы сделать его быстрее. Все, что вам нужно сделать, это использовать встроенный в Android менеджер оперативной памяти и избавиться от беспорядка. Давайте углубимся, чтобы узнать больше об этом.
Используйте встроенный менеджер оперативной памяти Android для освобождения памяти
Да, в Play Маркете есть приложения, которые очищают оперативную память, но этот подход просто требует или использует больше ресурсов. Кроме того, приложения по-прежнему будут открываться после закрытия. Теперь вы можете воспользоваться встроенным диспетчером оперативной памяти Android и правильно освободить память устройства.
Включить параметры разработчика
Метод, который мы собираемся использовать, основан на параметрах разработчика. Если вы не знакомы с этой техникой, параметры разработчика можно включить в настройках, а затем перейти к разделу «О телефоне» и нажать на него 7 раз. Ознакомьтесь с нашими руководствами о том, как включить параметры разработчика на устройствах OnePlus, Samsung и Pixel.
После того, как параметры разработчика были включены, вот что вам нужно сделать:
<р>1. Запустите приложение «Настройки» и перейдите в раздел «Система». <р>2. Теперь нажмите «Дополнительно», а затем выберите «Параметры разработчика».<р>3. В параметрах разработчика вы ищете Запуск служб.
<р>4. В списке откройте службу, которую вы хотите остановить, и сообщите о ней, если у вас возникнут проблемы.
Это все, что вам нужно сделать, чтобы воспользоваться преимуществами диспетчера оперативной памяти и удалить нежелательные службы, занимающие вашу память. Обратите внимание, что используйте предоставленные данные для управления выбором приложения. Приложения, которые используют больше всего памяти, можно очистить, и если эти приложения используются часто, выберите другое приложение.
История будет продолжена, поэтому следите за обновлениями, чтобы узнать подробности по этому вопросу. На этом пока все, ребята. Что вы думаете по этому поводу? Вы хотите использовать встроенный менеджер оперативной памяти Android? Дайте нам знать в комментариях.
В настоящее время есть телефоны с 12 ГБ ОЗУ, но они будут стоить вам гораздо больше. У большинства Android-устройств гораздо меньше памяти — я бы поспорил, что у большинства из них меньше 4 ГБ. А учитывая, что система занимает около 2 ГБ, установленным пользователем приложениям остается мало места для работы.
Ранее в истории Android люди пытались решить эту проблему с помощью менеджеров оперативной памяти (приложений, которые позволяли закрывать другие приложения, чтобы освободить оперативную память). По иронии судьбы, это потребовало бы больше системных ресурсов, поскольку приложения просто открывались бы после закрытия. Но теперь в Android есть собственный встроенный диспетчер оперативной памяти, который может помочь вам освободить память при правильном использовании.
Шаг 1. Разблокируйте параметры разработчика
Диспетчер оперативной памяти находится в меню параметров разработчика Android, которое по умолчанию скрыто. Чтобы разблокировать его, перейдите в «Настройки» -> «О телефоне», затем быстро семь раз нажмите «Номер сборки». Если вам нужна дополнительная помощь в этой части, ознакомьтесь с нашим полным руководством ниже.
Шаг 2. Управляйте оперативной памятью
Теперь откройте меню параметров разработчика. Для большинства людей он будет указан в самом низу главного меню настроек. Для более новых версий Android вам, возможно, придется перейти в «Настройки» -> «Система» -> «Дополнительно», чтобы найти его. Оказавшись внутри, выберите «Запущенные службы», который должен быть ближе к началу списка.
Теперь вы увидите все активные службы. Службы — это компоненты приложений, которые выполняют операции в фоновом режиме (в течение длительного периода времени) без пользовательского интерфейса. Например, службы обрабатывают RCS-сообщения. Обычно они отлично работают, и вам даже не нужно взаимодействовать с ними или даже знать об их существовании. Однако время от времени вы можете столкнуться с проблемой, особенно если у вас ограниченное количество оперативной памяти.
Здесь вы можете остановить запуск любой службы или сообщить об этом, если у вас возникла проблема. По умолчанию приложения упорядочены по использованию оперативной памяти в порядке убывания. Если вы обнаружите, что ваш телефон работает медленно, мы не рекомендуем без разбора останавливать процессы. Приложение снова откроется через несколько секунд, нарушив цель. Мы рекомендуем использовать предоставленные данные, чтобы лучше управлять выбором приложений.
Проанализировав диаграмму вверху, определите, не связана ли проблема с нехваткой оперативной памяти. Если около 1/3 вашего общего объема ОЗУ свободно, скорее всего, у вас нет проблем с ОЗУ, и вам следует поискать в другом месте. Если у вас меньше доступной оперативной памяти, просмотрите список приложений с наибольшим использованием оперативной памяти для служб. Вам нужны эти приложения? Если вы этого не сделаете, удалите его.
Кроме того, если приложение использует слишком много оперативной памяти, вам может потребоваться удалить его на данный момент, пока вы не обновите свой телефон или его разработчик не выпустит обновление для уменьшения использования оперативной памяти. Для смартфонов с оперативной памятью менее 4 ГБ вам нужно будет выбирать, какие приложения останутся на вашем телефоне, если вы хотите обеспечить бесперебойную работу.
Защитите свое соединение без ежемесячного счета. Получите пожизненную подписку на VPN Unlimited для всех своих устройств, совершив разовую покупку в новом магазине Gadget Hacks Shop, и смотрите Hulu или Netflix без региональных ограничений, повышайте безопасность при просмотре в общедоступных сетях и многое другое.
Читайте также: