0

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

我的问题是,当我单击通知时,它会将我带到主要活动并再次启动我的服务。我不想再次重新启动我的服务。我该如何实现这一点。

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

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;

}

4

3 回答 3

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;
}
于 2013-06-21T09:20:12.837 回答
0

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

笔记:

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

于 2013-06-20T14:00:10.927 回答
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;
        }
    }
于 2013-06-20T13:59:34.033 回答