У меня есть служба в моем приложении для Android, которая работает всегда. Теперь у меня есть настройки с моего сервера через GCM и обновление этих параметров для моей службы. Я установил свои настройки в oncreate of service. Поэтому мне нужно перезапустить мой сервис, чтобы получить последние настройки. Как перезапустить мой сервис?
Как перезапустить службу в android для вызова службы oncreate снова
Ответ 1
Вызов этих двух методов сразу после друг друга, что приведет к остановке и запуску Service
. Не знаю никакого метода, который "перезапускает" его. Вот как я реализовал его в своем приложении.
stopService(new Intent(this, YourService.class));
startService(new Intent(this, YourService.class));
Ответ 2
Лучшим решением является использование onDestroy().
Когда необходимо перезапустить службу, просто вызовите
RESTARTSERVICE = true;
stopService(new Intent(this, CLASS_OF_SERVICE.class));
и
public void onDestroy()
{
if (RESTARTSERVICE)
{
startService(new Intent(this, CLASS_OF_SERVICE.class));
}
}
Ответ 3
Почему бы не переместить материал настройки из onCreate в отдельный метод. Затем вы можете вызвать этот метод из onCreate, а также вызвать его, когда вам нужно изменить настройки. Тогда нет необходимости фактически перезапускать службу.
Ответ 4
Использовать метод onTaskRemoved (Intent rootIntent) внутри службы, поэтому служба снова перезапустилась
@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);
}
Ответ 5
Повторный вызов startService()
снова запустит службу, если она уже запущена, то есть служба будет перезапущена.