Освобождение памяти от активности службы переднего плана

У меня есть приложение со службой переднего плана и одним действием. Служба может запускаться сама по себе при загрузке или запускаться из действия. Я заметил, что когда служба запускается при загрузке, использование памяти составляет ~ 3 МБ. Как только я открываю действие, использование памяти увеличивается примерно до 9 МБ. После того, как активность была открыта (а затем закрыта кнопкой «Назад» или «Домой»), объем памяти никогда не снижается до 3 МБ, даже после многих часов работы и открытия других приложений.

Мой вопрос: следует ли освобождать память от активности или это ожидается с помощью службы переднего плана?


person Flyview    schedule 20.03.2014    source источник
comment
Неужели уже пробовали реально убить приложение? Вы включаете его в настройках разработчика и удерживаете кнопку «Назад», пока не появится всплывающее сообщение о том, что приложение убито.   -  person Scoup    schedule 21.03.2014


Ответы (2)


Оказывается, Android не освободит активность из памяти, пока весь процесс не будет перезапущен. Поскольку это служба переднего плана, ее процесс почти никогда не уничтожается, поэтому этого не происходит.

Решение состоит в том, чтобы запустить службу и активность в своих собственных процессах, указав:

android:process="name"

в AndroidManifest.xml

person Flyview    schedule 25.04.2014

Вы можете завершить процесс, используя System.exit(0). Он будет перезапущен только с работающим передним планом и, следовательно, с использованием меньшего количества памяти. Однако ваша служба переднего плана перестанет работать на короткое время, прежде чем она будет перезапущена системой.

Однако то, что это можно сделать, не означает, что это нужно делать. Когда андроиду нужна память, он автоматически делает то же самое. Так что не стоит беспокоиться о повышенном потреблении памяти. Память будет восстановлена ​​при необходимости.

person A.J.    schedule 15.12.2014