МногозадачностьСовсем недавно я заблуждался по поводу работающих приложений в системе Андроид, думал, что все запущенные приложения потребляют память и нагружают аппарат, тем самым увеличивается потребление энергии, и батарея быстрее садится. На самом же деле все не так просто, как казалось. Так давайте доведем дело до сути, которая будет ясна и начинающему пользователю этой операционной системы.

Итак, запущенные программы потребляют ресурсы аппарата, по сути дела так оно и есть, но есть еще один нюанс, который меняет все дело в корне. На самом деле все программы в андроиде модульные, то есть состоят из различных кусочков, которые образуют одно целое (программу). Эти кусочки работают каждая отдельно, не касаясь своих «братьев». При запуске диспетчера задач можно увидеть список открытых приложений, но это еще не означает, что вся программа используется полностью. Она может даже просто висеть в списке, а работать вообще не будет, а показывается она потому, что все-таки в ресурсах аппарата есть память. Если объяснить проще, то используется кэш (dalvik), это как в интернет-браузере, при открывании одной страницы очень часто, браузер просто копирует данные в кэш, для того чтобы последующий запуск производился быстрее. А когда аппарату потребуется запустить достаточно весомое приложение, то эти висящие программы попросту выгрузятся.

Итог

Очистка памяти не приводит к ускорению работы аппарата, Вы просто освобождаете количество цифр памяти (free memory), от этого ничего не меняется.

3 типа модулей в Андроид

  1. Activity
  2. Broadcast Receivers
  3. Services

Рассмотрим каждый из них.

Activity

Это собственно окно Вашего приложения. Количество окон = количеству активити. К примеру, вы запустили музыкальный плейер jetAudio Basic, окно, где играет музыка, и имеются различные кнопки это одна активити, а окно с названиями песен и альбомов, другая активити, листая эти окна, предыдущая активити «умирает», тем самым продолжительность жизни их невысока. И не стоит беспокоится о том, что запущенный ранее эквалайзер, перед главным окном висит в системе, нет, его вообще нет, он не работает, лишь только оставляет свои настройки. Есть такие приложения, с одним окном, к примеру, калькулятор. После того как вы переключились с него на другое приложение, он «засыпает» в КЭШе и ждет пробуждения.

Broadcast Receivers

Этот модуль отвечает за прием различных глобальных сообщений. Модуль очень полезен для связи между программами. Он существует ровно столько, сколько необходимо обрабатывать сообщения. Для ускоренной работы приложение остается висеть в памяти, на случай, если ему вновь потребуется обрабатывать сообщение. В этом модуле есть некоторые хитрости в потреблении памяти. К примеру, если приложение уже установило для себя получение глобальных сообщений, то система будет запускать его постоянно, и оно будет убиваться «таскменеджером», согласитесь бесполезно и к тому же вредно. Но есть и такой вариант, что приложение может зарегистрироваться программно и тогда, получение сообщений возможно только в том случае, когда приложение работает. Пример, музыкальный плейер должен получать управление от гарнитуры и ставиться в режим паузы при поступлении звонка на телефон, если же он не запущен, то он на такие события не реагирует. Думаю тут все понятно, и я разъяснил понятным языком. В таком случае появляется необходимость «перекрыть» приложение, которое получает сообщения и не может успокоиться, как плейер и плейер подкастов, которые конфликтуют между собой.

Services (сервисы)

Вот, настал самый важный момент, мы подошли к сервисам. Вот именно они поглощают большую часть ресурсов андроида. Это именно те программы, которые работают в фоне. Очень важный момент – приложения, которые имеют иконки в статус-баре занимают больший приоритет, поэтому большинство проигрывателей после запуска отображают свою иконку.

Самые важные сервисы – загрузка, синхронизация, обновление и тому подобное. Тасменеджеры очень плохо определяют такие приложения, поэтому лучше всего использовать стандартный Running Services.

Еще одно явление Андроида состоит в том, что при нехватке ресурсов система закрывает сервис и после вновь пытается его восстановить, чтобы вернуть все как было.

Вывод

Приложение может работать разными частями, при этом если вы закрываете приложения, это не означает, что Вы его полностью выключили, Андроид может запустить его заново. Стоит заметить, что закрывать необходимо те приложения, которые «криво» написаны «кривыми руками». А так же нужно помнить, не обязательно при скачке приложения с Google Play оно будет идеально написано.