Как автоматически перезапустить убитую службу?

Когда служба была убита, как ее автоматически перезапустить?

иногда даже не позвонив onDestroy()


person SEed    schedule 12.01.2011    source источник
comment
Если ваша служба была убита, это произошло потому, что либо пользователь убил ее, либо ОС не хватило памяти. Это означает, что вам, вероятно, не следует перезапускать его. Вы не должны оставлять такие долго работающие службы   -  person Falmarri    schedule 12.01.2011
comment
спасибо за ответ, но есть некоторые сервисы, когда я их отключил, они скоро сами себя перезапустят.   -  person SEed    schedule 12.01.2011


Ответы (3)


Я унаследовал IntentService, поэтому мне пришлось быть нежным. Это сработало для меня, когда я переопределил onStartCommand(), но

public int onStartCommand(Intent intent, int flags, int startId) {
   super.onStartCommand(intent, flags, startId);
   return START_STICKY;
}

То есть позволить родительскому элементу делать то, что он должен, и вернуть START_STICKY.

person Meymann    schedule 08.12.2012
comment
Я делаю то же самое. отлично работает в nexus 5. Но в xiaomi сервис убивается, как только мое приложение убивает. - person Abhi; 07.04.2016
comment
В плохих случаях вы можете запустить будильник, чтобы убедиться, что ваш сервис работает. Остерегайтесь использовать его слишком часто, так как пробуждение ЦП расходует заряд батареи. У вас есть приложение, которое оживляет, чтобы закрыть экран? - person Meymann; 21.04.2016

Переопределяет onStartCommand() и дает START_STICKY или START_REDELIVER_INTENT (в зависимости от ваших потребностей) в качестве возвращаемого значения. Затем система обязательно перезапустит вашу службу, пока вы явно не остановите службу.

http://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT

http://developer.android.com/reference/android/app/Service.html#START_STICKY

person Surya Wijaya Madjid    schedule 25.06.2012
comment
Я делаю START_STICKY. отлично работает в нексусе 5 и перезапускает службу. Но в сяоми сервис убивается, как только убивает мое приложение. - person Abhi; 07.04.2016

Если у вас убита служба, система попытается перезапустить ее позже. Прочтите дополнительную информацию.

person Vladimir Ivanov    schedule 12.01.2011