Хорошо, значит, у написанного мною приложения есть служба (которая отслеживает данные GPS) с одним основным действием, которое связывается с ним с помощью bindService в его методе onStart()
и отсоединяется от службы в его методе onStop()
используя unbindService(ServiceConnection)
.
У меня также есть действие, которое представляет собой экран параметров, который запускается нажатием кнопки на основном действии.На этом экране параметров у меня есть флажок «Запуск в фоновом режиме», который, если задано значение true, означает, что при выходе пользователя из приложения с помощью кнопок «Домой» или «Назад» служба продолжит работу, не поворачивая GPS.выкл.
Я делаю это, вызывая this.startForeground onUnbind
и this.stopForeground onRebind
, если для параметра установлено значение true, и останавливая и запуская мой считыватель местоположения onUnbind
и onRebind
соответственно, если значение равно false,
Если служба работает в фоновом режиме, она также отображает уведомление, чтобы убедиться, что пользователь понимает, что GPS все еще работает и истощает свою мощность.Это уведомление отображается и останавливается с использованием методов startForeground
и stopForeground
.
Итак, проблема заключается в том, является ли этот параметр истинным, если я просматриваю экран параметровЯ хочу, чтобы служба продолжала работать, и я не хочу, чтобы это уведомление появлялось.Поэтому я установил флаг, который установлен в true, если я нажал кнопку, чтобы перейти к экрану параметров, и не вызывал unbindService, если флаг равен true.
Это работает, за исключением одной небольшой проблемы.Если пользователь нажимает кнопку «Домой» при просмотре экрана параметров, служба не останавливается, если она должна быть (потому что она все еще привязана к главному экрану), и если она должна продолжать работать, она не отображает предупреждениеуведомление (и, конечно, это означает, что услуга по-прежнему считается в фоновом режиме).
Как мне заставить это приложение вести себя так, как я хочу?