2011-05-03 3 views
0

애플리케이션에 루프가있는 서비스가 있다고 가정하면이 서비스는 의도에 의해 시작됩니다. 그런 다음 프라임 서비스가 계속 실행되는 동안 동일한 서비스를 시작하려는 다른 응용 프로그램 (동일하지만 다른 AppID 포함)이 있습니다. 의도가 어떻게 이것을 처리 할 수 ​​있습니까? (참고 : 두 서비스가 동시에 실행되기를 원합니다 ...)인 텐트는 동일한 유형의 여러 서비스 나 클래스를 어떻게 처리합니까?

나는 그 뒤에 "방법"을 설명하는 이해 가능한 대답을 찾고 있습니다. "이 코드는 그 문제를 처리합니다. ! ". 당신의 대답이 나의 모범과 맞지 않는다면 나는 문제가되지 않습니다. 나는 아직도 제 질문이 홀수 (또는 멍청한) 방식으로 요구 될 수 있기 때문에 미리 사과드립니다.

감사합니다. - 바비

답변

0

서비스는 AndroidManifest.xml에 선언되어야합니다. 서비스 클래스를 지정합니다. 명시 적 인 텐트 (서비스 클래스 (및 선택적으로 구성 요소 이름) 지정) 또는 서비스와 관련된 IntentFilter와 일치하는 Intent를 사용하여 서비스를 시작할 수 있습니다.

사례 1은 명시적인 의도를 사용하고 있습니다. 1 개의 앱만 클래스를 서비스로 등록하면 두 번째 앱에 첫 번째 앱의 서비스 사본을 시작할 ComponentName과 함께 인 텐트를 사용해야합니다. 이 경우 해당 서비스 클래스의 인스턴스가 하나만 활성화됩니다. 두 앱이 클래스를 서비스로 등록하면 인 텐트는 해당 서비스 클래스의 두 번째 인스턴스를 시작합니다.

사례 2는 IntentFilter를 사용하고 있습니다. 두 서비스 선언 모두 동일한 IntentFilter를 사용하고 IntentFilter 우선 순위가 높아지면 더 높은 우선 순위를 갖는 서비스 선언이 시작되고 본질적으로 항상 승리하므로 해당 Service 클래스의 인스턴스가 하나만 실행됩니다. 두 서비스 선언이 모두 동일한 우선 순위를 갖는다면, 서비스 선언이 사용된다.

어쨌든 언제든지 (해당 서비스 선언 1 개에 대해) 해당 서비스의 복사본을 최대 한 개까지만 실행할 수 있습니다. "원격"프로세스 선언으로 미친 짓을 할 수는 있겠지만 그것이 사실이라고 생각합니다.

+0

훌륭한 답변, 감사합니다. Femi, 많은 것을 명확하게 만들었습니다! 건배! :디 – BobbyTee

관련 문제