Подтвердить что ты не робот

Как перезапустить службу в android для вызова службы oncreate снова

У меня есть служба в моем приложении для Android, которая работает всегда. Теперь у меня есть настройки с моего сервера через GCM и обновление этих параметров для моей службы. Я установил свои настройки в oncreate of service. Поэтому мне нужно перезапустить мой сервис, чтобы получить последние настройки. Как перезапустить мой сервис?

4b9b3361

Ответ 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() снова запустит службу, если она уже запущена, то есть служба будет перезапущена.