Служба Android в том же процессе и выпуске памяти - PullRequest
1 голос
/ 28 ноября 2011

У меня есть Служба, которая на переднем плане. Он локально связан с одним (или несколькими) действием, поэтому действие и служба выполняются в одном и том же процессе. Может быть некоторое время, в течение которого действие не отображается (типичный случай использования музыкального проигрывателя).

Если служба и действие находятся в одном и том же процессе, операционная система не может повторно использовать память для операции, если служба тоже не завершена? Ответ мне кажется да, согласно этой статье

Если последнее верно, я должен создать два отдельных процесса:

  • Чтобы быть вежливым с системой / другими приложениями?
  • чтобы быть более уверенным, моя служба не будет убита?

Или нет ничего особенного в том, чтобы связать активность с сервисом?

1 Ответ

2 голосов
/ 28 ноября 2011

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

«Типичный сценарий использования музыкального проигрывателя» не будет использовать bindService() IMHO.Служба переднего плана не будет использовать bindService() IMHO.Как минимум, от дополнительно от до bindService() для активности-> связи с сервисом вам потребуется startService(), так что после того, как вы unbindService() (например, пользователь нажмет BACK), сервис сможет продолжить работу.

Если служба и действие находятся в одном и том же процессе, операционная система не может повторно использовать память для операции, если только служба тоже не завершена?

память для действия никогда не «перераспределяется операционной системой», кроме как путем завершения всего процесса.К сожалению, это не совсем ясно из документации .

Если пользователь нажал BACK, чтобы выйти из операции, или вы в противном случае вызвали finish() для действия, действие должно быть мусором.собранный, предполагая, что ничто не заставляет его зависать (например, на который ссылается статический элемент данных).

, если я создам два отдельных процесса

Абсолютно нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...