2011-01-12 4 views
7

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

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

+1

Если ваша служба была убита, это связано с тем, что пользователь либо ее убил, либо операционная система была низкой в ​​памяти. Это означает, что вы, вероятно, не должны перезапускать его. Вы не должны оставлять длительные сервисы вроде этого – Falmarri

+1

спасибо за ответ, но есть некоторые услуги, когда я их убил, они скоро перезагружатся. – SEed

ответ

0

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

3

Переопределяет 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

+0

Я делаю START_STICKY. работая нормально в nexus 5 и перезапустив службу. Но в xiaomi служба убивается, как только мое заявление убивает. – Abhi

6

Я унаследовал IntentService, так что я должен был быть нежным. Он работал для меня, когда я отменяю onStartCommand(), но

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

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

+0

Я делаю то же самое. работая нормально в nexus 5. Но в xiaomi служба убивается, как только мое заявление убивает. – Abhi

+0

В плохих случаях вы можете запустить будильник, чтобы убедиться, что ваш сервис является живым. Остерегайтесь использовать его слишком часто, так как бодрствование процессора стоит от батареи. У вас есть приложение, которое оживляет салфетки, чтобы уволить? – Meymann

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