2013-06-20 5 views
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; 

}

답변

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; 
     } 
    } 
0

당신은 활동에 getIntent()을 확인하고 서비스를 시작 여부를 확인 통지의 의도 번들에 몇 가지 추가를 둘 수 있었다.

참고 :

서비스가 이미 실행중인 경우, 그것은 다시 시작되지 않습니다.

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; 
} 
관련 문제