2011-01-12 11 views
7

Cuando se ha cancelado un servicio, ¿cómo reiniciarlo automáticamente?¿Cómo reiniciar un servicio eliminado automáticamente?

veces sin ni siquiera llamar onDestroy()

+1

Si se canceló su servicio, es porque el usuario lo mató o el sistema operativo tenía poca memoria. Eso significa que probablemente no deberías reiniciarlo. No debe dejar servicios de larga ejecución como ese – Falmarri

+1

gracias por responder, pero hay algunos servicios, cuando los maté, se reiniciarán pronto. – SEed

Respuesta

0

Si usted tiene su servicio mató, el sistema intentará reiniciar más tarde. Lee more.

3

Anula onStartCommand() y proporcione START_STICKY o START_REDELIVER_INTENT (según sus necesidades) como valor de retorno. El sistema entonces se asegurará de reiniciar su servicio hasta que detenga explícitamente el servicio.

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

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

+0

Estoy haciendo START_STICKY. trabajando bien en Nexus 5 y reiniciando el servicio. Pero en el servicio de Xiaomi se está matando tan pronto como mi aplicación está matando. – Abhi

6

I heredado una IntentService, por lo que tuvo que ser suave. que trabajó para mí cuando me hizo caso omiso de onStartCommand() pero

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

Es decir, dejar que el padre haga lo que debe y volver START_STICKY.

+0

Estoy haciendo lo mismo. trabajando bien en Nexus 5. Pero en el servicio Xiaomi se está matando tan pronto como mi aplicación está matando. – Abhi

+0

En los casos malos, puede iniciar un intento de alarma para asegurarse de que su servicio sea en vivo. Tenga cuidado con el uso con demasiada frecuencia, ya que despertar la CPU cuesta la vida de la batería. ¿Tiene una aplicación que rescata deslizar para descartar? – Meymann

Cuestiones relacionadas