나는 다른 스레드를 checking if a service is running에 대해 읽었지만 이것이 나를 위해 작동하지 않습니다.언 바운드 서비스가 실행 중인지 확인하는 방법은 무엇입니까?
나의 상황은 백그라운드 웹 서버 서비스를 만들고 있지만 활동이 끝난 후에도 계속 실행되기를 원하기 때문에 바인딩하는 것이 아닙니다. 이 서비스는 사용자가 실행 중임을 알 수 있도록 알림을 생성합니다. 사용자는 액티비티의 버튼을 통해 서비스를 중지 할 수 있습니다.
이것은 활동이 시작될 때를 제외하고는 모두 잘 작동합니다. 서비스가 이미 실행 중인지 확인할 수 없습니다. 다음 사용하고 있습니다 :
if (isMyServiceRunning() == false)
{
Intent ws = new Intent(this, WebServerService.class);
startService(ws);
}
그리고이
private boolean isMyServiceRunning() {
String sClassName;
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
sClassName = service.service.getClassName();
DebugMsg("Service: " + sClassName);
if (sClassName.contains("com.<mydomain>.webservice"))
{
return true;
}
}
return false;
}
을 나는 서비스의 목록은 시스템 및 제 3 자 서비스를 모두 실행 얻을. 하지만 내 서비스가 실행 중임에도 불구하고 내 서비스가 목록에 표시되지 않습니다. 전화기의 설정 -> 응용 프로그램 -> 실행중인 서비스에 들어가면 거기에서 실행되는 것을 볼 수 있습니다.
이미 실행중인 서비스에서 startService를 호출하면 무시해야한다는 문서를 읽었습니다. 하지만 디버거에서 OnCreate와 OnStart가 모두 호출되는 것을 볼 수있는 것은 아닙니다.
백그라운드 서비스가 파일을 처리하는 중일 때마다 새 서비스를 만들지 않는 것이 중요합니다. 액티비티는 서비스와 통신 할 필요가 없습니다. 서비스가 실행 중이 아니면 시작하고 사용자가 버튼을 클릭하면 종료합니다.
내 서비스가 getRunningServices 목록에 표시되지 않는 이유에 대한 아이디어가 있으십니까?
btw는 내 로컬 서비스에서 getSystemService (..) 목록을 표시합니까?! 나는 생각하지 않는다. : S – Ewoks