2014-11-11 5 views
1

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

Другими словами, служба, которую я создал, не разрушена, и создается дополнительная служба. Я могу видеть, что onDestroy() не называется, а onCreate() & onStart() дозвонились снова

Почему? Как я могу это предотвратить? Вы можете увидеть исходный код, я использую в этом примере: Source Code

+0

Закрытие приложения обычно не должно прерывать его процесс (хотя это может произойти при экстремальном давлении в памяти). Нормально, что компонент, например Activity или Service, должен быть уничтожен, когда он находится в совместимой конфигурации, и его можно просто запустить снова. –

+0

При написании закрытия приложения я имел в виду двойное нажатие кнопки «домой» и прокрутку приложения. Вы говорите, что это не прекращает процесс? –

+0

Вывод из списка рецензентов завершает его, но это не обычный способ, когда пользователю предлагается оставить приложение (обычно вы просто «уходите» на что-то еще и оставляете решение об очистке от управления ресурсами Android). Когда процесс прекращается внезапно, onDestroy() не может быть вызван. –

ответ

1

Если вы начинаете ваш Service используя Context.startService() и ваш Service возвращает START_STICKY от его onStartCommand() то системы ожидают, что Service либо явно остановлен через что-то вызов Context.stopService() или сам Service, вызывающий stopSelf(). Когда вы используете экран «Реценты» для «прокручивания» вашего приложения, вы решительно убиваете процесс, но явно не останавливаете Service.

+0

Итак, как бы вы предложили справиться с этим сценарием? –

+0

Что вы пытаетесь выполнить и как ваша 'Сервис' используется/нужна? Если все, что вы используете «Сервис», - это обработать какую-то фоновую задачу, пока ваше приложение активно, подумайте об использовании «IntentService», который будет порождать фоновый поток для обработки «Intent», который вы передаете, затем автоматически умирает, когда он выполнял обслуживание всех запросов. –

+0

Моя цель - создать службу, которая будет работать в фоновом режиме все время, вы можете взять whatsapp для примера. Я думаю, что я могу работать с ОС, разрушая и воссоздавая ее время от времени, но в том случае, когда я описывал, что стандартные обратные вызовы не вызываются ... –

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