如何再次重新启动在android系统服务来调用服务的onCreate(How to restart

2019-07-03 13:39发布

我在它运行always.Now我从我的服务器通过GCM一个设置,这些设置更新到我的服务Android应用程序有一个服务。 我把服务的OnCreate中我的设置​​。 所以,我需要重新启动我的服务来获取最新的设置。 如何重新启动我的服务?

Answer 1:

调用此两种方法之后对方,这将导致Service停止和启动。 不知道有什么方法“重启”了。 这是我如何在我的应用程序中实现它。

stopService(new Intent(this, YourService.class));
startService(new Intent(this, YourService.class));


Answer 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));
    }
}


Answer 3:

为什么不从的onCreate移动设置的东西到一个单独的方法。 然后,您可以调用从的onCreate这种方法并调用它,当你需要更改设置。 那么就没有必要真正重新启动该服务。



Answer 4:

使用方法onTaskRemoved(意向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);
}


Answer 5:

只是再次调用startService()将再次启动该服务,如果它已经运行,这意味着服务将被重新启动。



文章来源: How to restart service in android to call service oncreate again