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