Сервис по-прежнему привязан к основной активности при нажатии кнопки «Домой», при просмотре другой активности - PullRequest
0 голосов
/ 11 ноября 2010

Хорошо, значит, у написанного мною приложения есть служба (которая отслеживает данные GPS) с одним основным действием, которое связывается с ним с помощью bindService в его методе onStart() и отсоединяется от службы в его методе onStop()используя unbindService(ServiceConnection).

У меня также есть действие, которое представляет собой экран параметров, который запускается нажатием кнопки на основном действии.На этом экране параметров у меня есть флажок «Запуск в фоновом режиме», который, если задано значение true, означает, что при выходе пользователя из приложения с помощью кнопок «Домой» или «Назад» служба продолжит работу, не поворачивая GPS.выкл.

Я делаю это, вызывая this.startForeground onUnbind и this.stopForeground onRebind, если для параметра установлено значение true, и останавливая и запуская мой считыватель местоположения onUnbind и onRebind соответственно, если значение равно false,

Если служба работает в фоновом режиме, она также отображает уведомление, чтобы убедиться, что пользователь понимает, что GPS все еще работает и истощает свою мощность.Это уведомление отображается и останавливается с использованием методов startForeground и stopForeground.

Итак, проблема заключается в том, является ли этот параметр истинным, если я просматриваю экран параметровЯ хочу, чтобы служба продолжала работать, и я не хочу, чтобы это уведомление появлялось.Поэтому я установил флаг, который установлен в true, если я нажал кнопку, чтобы перейти к экрану параметров, и не вызывал unbindService, если флаг равен true.

Это работает, за исключением одной небольшой проблемы.Если пользователь нажимает кнопку «Домой» при просмотре экрана параметров, служба не останавливается, если она должна быть (потому что она все еще привязана к главному экрану), и если она должна продолжать работать, она не отображает предупреждениеуведомление (и, конечно, это означает, что услуга по-прежнему считается в фоновом режиме).

Как мне заставить это приложение вести себя так, как я хочу?

1 Ответ

0 голосов
/ 12 ноября 2010

Хорошо, я только что нашел решение, которое, кажется, работает.Я связываю экран параметров со службой в методе onStart () и снова связываю его в onStop ().Метод onStop () предыдущего действия вызывается только после метода onResume () нового, поэтому он работает.

У кого-нибудь есть лучший способ?Кажется глупым связывать действие со службой, к которой ему фактически не нужен доступ.

...