Cómo reiniciar el servicio en android para llamar al servicio de nuevo
Tengo un servicio en mi aplicación de Android que se ejecuta siempre. Ahora tengo una configuración de mi servidor a través de GCM y actualizar estos ajustes a mi servicio. Puse mis ajustes en el servicio del ofcreate. Así que necesito reiniciar mi servicio para obtener la configuración más reciente. ¿Cómo reiniciar mi servicio?
- ¿Por qué mis intenciones no se entregan correctamente?
- Android: mantener vivo el servicio incluso el proceso padre es asesinado
- ¿Cómo iniciar el servicio con Alarm Manager en Android?
- ¿Puede alguien explicar cuál es la diferencia entre el servicio no enlazado y enlazado en android
- ¿Es posible ejecutar el servicio en la plataforma android de forma continua incluso después de bloquear el dispositivo?
- ¿Cómo detener / cancelar el administrador de alarmas en otra actividad?
- Administrador de alarmas programado no funciona Android
- Uso de Job Scheduler en la API de Android <21
- Creación de un servicio en Android
- Pasando objeto personalizado al servicio android en diferentes procesos
- ¿Cómo comprobar si un servicio se está ejecutando en Android?
- Servicio MediaPlayer Android
- Servicio enlazado de Android: ¿debo reconectar manualmente en onServiceDisconnected o intento reconectar automáticamente?
Llame a estos dos métodos inmediatamente después de cada uno de ellos, lo que hará que el Service
deje de iniciar. No conozco ningún método que lo "reinicie". Así es como lo he implementado en mi aplicación.
stopService(new Intent(this, YourService.class)); startService(new Intent(this, YourService.class));
La mejor solución es usar onDestroy ().
Cuando necesite reiniciar el servicio simplemente llame
RESTARTSERVICE = true; stopService(new Intent(this, CLASS_OF_SERVICE.class));
y
public void onDestroy() { if (RESTARTSERVICE) { startService(new Intent(this, CLASS_OF_SERVICE.class)); } }
¿Por qué no mover las cosas de configuración de onCreate a un método separado. A continuación, puede llamar a este método desde onCreate y también lo llamará cuando necesite cambiar la configuración. Entonces no sería necesario reiniciar el servicio.
Utilice un método onTaskRemoved (Intent rootIntent) dentro del servicio, por lo que el servicio se reinicia de nuevo
@Override public void onTaskRemoved(Intent rootIntent) { System.out.println("service in onTaskRemoved"); long ct = System.currentTimeMillis(); //get current time Intent restartService = new Intent(getApplicationContext(), PushService.class); PendingIntent restartServicePI = PendingIntent.getService( getApplicationContext(), 0, restartService, 0); AlarmManager mgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); mgr.setRepeating(AlarmManager.RTC_WAKEUP, ct, 1 * 1000, restartServicePI); }
Sólo llamar de nuevo startService()
volverá a iniciar el servicio si ya está en ejecución, lo que significa que el servicio se reiniciará.
- ¿Cómo puedo obtener el tamaño de una carpeta en una tarjeta SD en Android?
- Android Historial de navegación dejando fuera sólo algunos sitios