안녕하세요 선후입니다^^(실력이 부족해 매일 질문만 하는 ㅠㅠ.....);
Service에 대해서 공부중인데요,
제가 원하는 Service가 살아있는지 알 수 있을까요?
왜 이렇게 하냐면
Service라는것이 자꾸 죽거나 사용자에 의해 죽임을 당하는데요
그 때 다른 방법으로 살릴려고 하는데,
제 Service가 죽지않았는데
mContext.startService(intent); 로 살리면 "Service"가 두개 세개 막 늘어나 버리더라구요 ㅠㅠ
질문 이에요 ㅠㅠ
1. 어떻게하면 제 Service가 존재하는지 알 수 있을까요?
2. 어떻게 하면 제 Service가 몇개가 돌아가는 중인지 알 수 있을까요?
저도 계속 공부하면서 찾아보겠지만 혹시라도 아시는분 계시면 좀 가르쳐주세요 ㅠㅠ

두 가지 방법이 있을 듯 합니다.
1. 간단하지만 조금 느린 방법.
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningServiceInfo> services = am.getRunningServices(100);
RunningServiceInfo info = new RunningServiceInfo();
시스템 서비스 중 하나인 ActivityManager 를 가져와서, 현재 플랫폼상에 돌고 있는 모든 서비스 목록을 가져와 찾는 방법입니다.
2. 깔끔하고 권장되지만 사용하기 번거러운 방법.
Intent i = new Intent("actiom");
boolean isStarted = bindService(i, new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//service is running.
}
}, 0);
AUTO_CREATE 플래그 없이, bindService 를 호출합니다. 서비스가 실행 중이라면 금방 (수 초내에...) ServiceConnection Callback 의 onServiceConnected 메서드가 호출될 것 입니다. 만일 그렇지 않다면, Service 가 동작하지 않는 것으로 판별하고 Service 를 명시적으로 시작하시면 됩니다.
3. 그런데 한 가지 궁금한 점이...
startService 를 호출 한다고 해서, Service Instance 가 늘어나는 것은 아닙니다. onStart 는 여러번 호출되지만, onCreate 는 한 번만 호출되거든요. service 초기화 과정을 onCreate 에 구현하시고, onStart 가 반복 호출되어도 별다른 문제가 없도록 구성하시면 어떨까 싶네요.



