如何在android中重启服务再次调用服务oncreate

我的Android应用程序中有一项服务,它总是运行。现在我通过GCM从我的服务器获得设置并将这些设置更新到我的服务。 我把我的设置放在oncreate of service上。 所以我需要重新启动我的服务以获取最新设置。 如何重启我的服务?

Solutions Collecting From Web of "如何在android中重启服务再次调用服务oncreate"

将这两种方法紧接着调用,这将导致Service停止并启动。 不知道任何“重启”它的方法。 这就是我在我的应用程序中实现它的方式。

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

最好的解决方案是使用onDestroy()。

当需要重新启动服务时才调用

 RESTARTSERVICE = true; stopService(new Intent(this, CLASS_OF_SERVICE.class)); 

 public void onDestroy() { if (RESTARTSERVICE) { startService(new Intent(this, CLASS_OF_SERVICE.class)); } } 

为什么不将设置内容从onCreate移动到单独的方法。 然后,您可以从onCreate调用此方法,并在需要更改设置时调用它。 然后就没有必要实际重启服务了。

在服务内部使用方法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); } 

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