在点击按钮我想用方法来启动服务startService(new Intent(currentActivity.this,MyService.class))
但如果服务正在运行,我不想调用此方法来避免运行服务,已经running.How这是possible.I我在同一个项目中同时使用意向的服务和服务 ,并希望申请相同的条件下两个。
Answer 1:
服务将只运行一次,所以你可以调用startService(Intent)
多次。
您将收到onStartCommand()
的服务。 所以记住这一点。
来源:注意多个呼叫Context.startService()
不嵌套(尽管也导致他们在多个相应的调用onStartCommand()
所以无论多少次启动一个服务将被停止一次Context.stopService()
或stopSelf()
被调用; 然而,服务可以使用他们的stopSelf(int)
方法,以确保服务不会停止,直到开始的意图已被处理。
在: http://developer.android.com/reference/android/app/Service.html的话题:服务生命周期
Answer 2:
使用startService()
启动服务将调用onStartCommand()
如果该服务还没有开始,它会调用onCreate()
初始化变量和/或启动一个线程onCreate()
Answer 3:
绑定您服务; 开始呼叫时:
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;
}
Answer 4:
每当我们从任何活动启动任何服务,Android系统调用服务的onStartCommand()方法,如果该服务尚未运行,系统首先调用的onCreate(),然后调用onStartCommand()。
所以想说的是,Android的服务开始的仅在其生命周期中一次,保持运行,直到stopped.if任何其他客户端要再次启动它,然后只onStartCommand()方法调用将所有的时间。
文章来源: how to prevent service to run again if already running android