如果已经运行android如何防止服务再次运行

点击一个button,我想启动服务使用方法startService(new Intent(currentActivity.this,MyService.class))但如果服务正在运行,我不想调用此方法,以避免运行服务已经running.How这是可能的。我在同一个项目中同时使用Intent服务Service ,并且希望对这两个项目应用相同的条件。

一个服务只能运行一次,所以你可以多次调用startService(Intent)

您将在服务中收到一个onStartCommand() 。 所以记住这一点。

来源:请注意,对Context.startService()多次调用不会嵌套(尽pipe它们会导致对onStartCommand()多个相应的调用),所以无论启动多less次,服务都会停止一次Context.stopService()stopSelf()被调用; 然而,服务可以使用他们的stopSelf(int)方法来确保服务不会停止,直到开始的意图已经被处理。

在: http : //developer.android.com/reference/android/app/Service.html关于主题:服务生命周期

使用startService() 。 启动服务将调用onStartCommand()如果服务尚未启动,它会调用onCreate() 。 初始化你的variables和/或在onCreate()启动一个Thread。

绑定你的服务; 当开始通话时:

 Intent bindIntent = new Intent(this,ServiceTask.class); startService(bindIntent); bindService(bindIntent,mConnection,0); 

然后检查您的服务是否正常工作,请使用如下方法:

  public static boolean isServiceRunning(String serviceClassName){ final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE); final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE); for (RunningServiceInfo runningServiceInfo : services) { if (runningServiceInfo.service.getClassName().equals(serviceClassName)){ return true; } } return false; } 

每当我们从任何活动开始任何服务,Android系统调用服务的onStartCommand()方法。如果服务尚未运行,系统首先调用onCreate(),然后调用onStartCommand()。

所以意思是说,android服务启动只有一次在其生命周期,并保持运行,直到停止。如果任何其他客户端想再次启动它,那么只有onStartCommand()方法将始终调用。