服务被多次调用?

时间:2013-06-20 13:51:57

标签: android service

我正在开发一个应用程序,我正在运行一些后台操作,并在特定条件满足时向用户显示通知。当用户点击通知时,应该将他带到主要活动,而无需重新启动服务。

我的问题是,当我点击通知时,它会将我带到主要活动并再次启动我的服务。我不想再次重启我的服务。我怎样才能实现这一点。

我已经使用以下代码检查运行或未租用服务的天气

public static boolean isServiceRunning(String serviceName,Context context){
boolean serviceRunning = false;
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
    ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i
            .next();

    if(runningServiceInfo.service.getClassName().equals(serviceName)){
        serviceRunning = true;
    }
}
return serviceRunning;

}

3 个答案:

答案 0 :(得分:0)

我已经使用了这段代码并且工作正常:)

ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) 
    {
        if (MyService.class.getName().equals(service.service.getClassName())) 
        {
            found = true;
        }
    }

答案 1 :(得分:0)

您可以检查活动的getIntent(),并在您检查启动或不启动服务的通知的意图包上添加一些额外内容。

注意:

如果服务已在运行,则不会重新启动。

答案 2 :(得分:0)

Finally I have rectified my code.as follows 


private boolean isMyServiceRunning() {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {

        if ("com.example.sevicedemosolution.Myservice".equals(service.service.getClassName().toString())) {

            return true;
        }
    }
    return false;
}