2015-02-20 4 views
3

У меня есть служба переднего плана, в которой я регистрирую данные о местоположении, и фильтр намерений для намерения аккумулятора Intent.ACTION_BATTERY_CHANGED и LocalBroadcast. Все из них я удаляю в onDestroy моей службы, как только эта служба мертва.Остановлена ​​перезагрузка переднего плана

Я также изменил целое число в onStartCommand от START_STICKY до START_NOT_STICKY, но это не имеет никакого эффекта.

Я регистрирую, когда эта служба запущена и уничтожена, а также моя основная деятельность, и кажется, что эта услуга начинается сама по себе без каких-либо действий.

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

Так что напомним.
- Это связанный, передний сервис.
- я вернусь START_NOT_STICKY в onStartCommand
- Когда я больше не нужно, и закрыть приложение, я отвязать от него, называют StopService и OnDestroy сервиса называется где мы разрегистрировать все приемники. - Служба запускается случайно после этого.

+0

Как служба заявила в манифесте? У вас есть какие-либо фильтры Intent, указанные для этой службы? – mach

+0

К сожалению, следовало бы упомянуть об этом. Нет, у меня нет настроек фильтров намерений в манифесте. Буквально только декларация – StuStirling

+1

Код сервиса был бы неплохо иметь. Пробовали ли вы регистрировать функции onBind() - и onNewIntent() в службе, чтобы попытаться определить, запущена ли она из-за привязки к ней активности или если это входящее намерение? – mach

ответ

3

Поскольку вы используете услугу переднего плана, вы должны вызвать метод stopForeground «Внимание: Целочисленный идентификатор, который вы указываете startForeground(), не должен быть равен 0."

Существует только два способа запуска службы, связывания или запуска из контекста, вы должны убедиться, что вы не делаете этого внутри своего кода.

Может быть, вы должны проверить на жизненном цикле услуг: http://developer.android.com/images/service_lifecycle.png

+0

Не следует ли мне вызвать stopForeground(), если я остановлюсь внутри самой службы? – StuStirling

Смежные вопросы