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

我在我的Android应用程序中运行always.Now服务现在我从我的服务器通过GCM设置并更新这些设置为我的服务。 我把我的设置在服务创build。 所以我需要重新启动我的服务来获取最新的设置。 如何重新启动我的服务?

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

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

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

最好的解决scheme是使用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()将会再次启动服务,如果它已经运行,这意味着服务将被重新启动。