2016-06-03 3 views
0

Context.bindService으로 전화하기 전에 특정 서비스를 사용할 수 있는지 (실행 중인지 또는 생성 가능한지) 알아야합니다.서비스 이용 가능 여부 확인

확인할 방법이 있습니까?

답변

2

서비스가 코드

private boolean isMyServiceRunning(Class<?> serviceClass) { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

을 사용하여 실행중인 경우 당신은 확인할 수 있습니다 내가 사용하여 전화 :

isMyServiceRunning(MyService.class) 

일부 발췌을 해킹으로부터는 만약이 Google Group Discussion

에 응답을 bods 당신의 클라이언트 및 서버 코드는 동일한 .apk의 일부이며 정확한 Intent (정확한 서비스 클래스를 지정하는 서비스)를 사용하여 서비스에 바인딩하면 간단하게 고객이 확인할 수있는 글로벌 변수를 서비스에 설정하십시오.

우리는 의도적으로 코드에서 경쟁 조건이 생겨서 그런 일을하고 싶을 때 거의 실패하지 않기 때문에 서비스가 실행 중인지 확인하기위한 API가 의도적으로 없습니다.

0

의견을 참조하십시오

ServiceConnection serviceConnection = new ServiceConnection() { 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
    // capture the service object , check for alive or not 
     service.isBinderAlive(); 

     } 

     @Override 
     public void onServiceDisconnected(ComponentName name) { 

     } 
    }; 
관련 문제