Если андроид перезапустит службу снова, вызовите onCreate?
Из моих маленьких знаний в области Android я понимаю, что ОС Android может убить мою службу в экстремальных условиях памяти.
Я создал службу, которая возвращает START_STICKY
. Услуга предназначена для работы в фоновом режиме.
Если андроид собирается убить мою службу, вызовет ли она onDestroy
?
И когда он перезапустится, он вызовет onCreate
?
Ответы
Ответ 1
Смотрите здесь, руководство для разработчиков. http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle
onCreate()
вызывается только при запуске процесса, который может быть либо при первом запуске службы, либо при его перезапуске, по сути, он вызывается всякий раз, когда он запускается.
onStartCommand()
вызывается всякий раз, когда клиент вызывает startService()
.
Когда служба будет уничтожена/полностью остановлена, Android должен вызвать onDestroy()
в этой службе. Я думаю, что это возможно для того, чтобы этого не произошло (например, процесс убит не через систему Android). В случае связанной услуги это происходит, когда нет более активных клиентских вложений.
Изменить: onCreate()
Запуск службы; onStartCommand()
кто-то пользуется услугами; onDestroy()
Служба убита/остановлена.
Ответ 2
Если кто-то вызывает Context.startService(), то система будет извлекать сервис (создавая его и вызывая его метод onCreate(), если это необходимо) а затем вызовите его метод onStartCommand (Intent, int, int) с помощью аргументы, предоставленные клиентом
...
Служба может быть запущена и связана с ней. В в таком случае система будет поддерживать обслуживание до тех пор, пока либо он запущен, либо есть одно или несколько подключений к нему с помощью флаг Context.BIND_AUTO_CREATE. Когда ни одна из этих ситуаций, вызов метода onDestroy() и обслуживание фактически прекращается. Вся очистка (остановка резьбы, отмена регистрации приемники) должны быть завершены по возвращении из onDestroy().
http://developer.android.com/reference/android/app/Service.html
EDIT: быстрый ответ. Да на оба вопроса