2011-05-05 5 views
1

우리는 웹 서비스로부터 메시지를 끌어 오기 위해 동일한 서비스를 가진 두 개의 응용 프로그램을 가지고 있습니다. 배터리 전원을 절약하기 위해 두 응용 프로그램 모두에 대해 하나의 서비스 만 필요하지만 application1을 제거한 경우 응용 프로그램 2의 서비스가 필요합니다.여러 서비스가 하나의 인 텐트를 사용하지 않도록하려면 어떻게해야합니까?

우리의 다른 앱이 시작되어 인계받을 수 있는지를 알기 위해 암묵적인 의도를 보냄으로써이를 달성하고 있습니다.

그러나 서비스 전체를 제거하지 않고 서비스를 중지하려고하면 두 응용 프로그램이 서비스를 시작하는 것으로 응답합니다 (갑자기 서비스가 1에서 0으로 변경됨).

** 질문이 이상했기 때문에 요청에 의해 수정되었습니다. 아래의 답변/의견 중 일부는 이전 질문 일 것입니다. 소란스러운 사람들을 위해 죄송합니다.

+0

서비스 정의에 대한 확신이 있습니까? 그것은 확실히 선택자와 같게 들린다. – JoxTraex

+0

2 차 댓글은 Android 개발자 사이트를 읽고 Chooser/Service/Activity를 찾아서 모두 의미하는 바를 이해하시기 바랍니다. 그들은 모두 자신의 응용 프로그램에서 특정 있으며, 우리가 당신을 도울 수 있습니다. – JoxTraex

+0

좋아요, 그래도이게 옳은 것 같아요. 우리는 앱을 가지고 있습니다. 기본 서비스를 가지고 있습니다. onDestroy는 설치된 다른 앱 중 서비스가 계속 실행되어야하는지 확인합니다. 그렇다면 앱 2로 전환하십시오. 3과 그들의 서비스를 실행 ...하지만 난 다시 읽고 당신에게 돌아갈 시간이 걸립니다! 지금까지 도움을 주셔서 감사합니다! -Bobby – BobbyTee

답변

0

특정 앱이 설치되어 있는지 확인하고 (현재 실행중인 것을) 발견하는 방법이 있습니다. 그러나 나는 '가능한 경우이 서비스 인스턴스를 사용하십시오'(예를 들어)와 같은 것을 말하기 위해 인 텐트에 조건부 정보를 제공하는 방법을 알지 못합니다.

내 접근 방식은 IntentService를 포함하지 않는 (즉, 활동이 없으므로 UI가 없음) 세 번째 앱을 만드는 것입니다. 그런 다음 다른 앱에서 서비스 코드를 제거하고 아무 것도하지 않을 때 휴면 상태 인 IntentService의 단일 인스턴스를 사용하게합니다.

서비스가 자신의 앱에만 한정되어 있으므로 암시 적 인 텐트 (예 : 작업/카테고리 지정)를 사용하지 않고 서비스 클래스 자체를 명시 적으로 지정하는 인 텐트를 사용하지 않는 것이 좋습니다. IntentService는 startService() 또는 bindService()를 사용하여 만들거나 시작할 수 있으며 응용 프로그램 요구 사항에 따라 둘 다 적용 할 수 있습니다.

+0

"해결 된"답변으로 다시 나열 해 주셔서 감사합니다! 너 미스터 스 쿼크에게 빚 졌어! – BobbyTee

+0

@BobbyTee : 그것을 수락 해 주셔서 감사합니다. 나는 그것이 당신을 위해 일하기를 바란다. – Squonk

0

보통 어떤 앱이 의도를 사용해야하는지 묻는 팝업이 있습니다. 그런 다음 의도가 해당 앱으로 전달됩니다. 한 앱을 기본값으로 표시 할 수도 있습니다.

아마도이 선택기를 '재설정'해야합니까?

+0

나는 이것이 전체적인 문제를 설명하지 않았다고 생각한다. 서비스가 파괴 된 후에 onDestroy는 "실행해야하는 다른 서비스가 있습니까?"라는 단일 의도로 질문합니다. 우리가 원하는 것은 통치권을 장악하고 필요로하는 우리의 응용 프로그램을 실행할 수있는 서비스 중 하나입니다. 비록 모두 똑같은 일을하고 있지만 모든 서비스가 시작되는 것이므로 내 질문은 서비스 응답의 양을 의도에 제한 할 수 있습니까? – BobbyTee

+0

질문을 편집하여 문제를보다 자세히 설명하십시오. –

+0

아 이들이 서비스가 아니기 때문에 활동이 아니므로 팝업을 사용할 수 없습니다. 그들은 단지 자신들 사이에서 시작됩니다 ... O_o 더 많은 정보가 필요하거나 제 질문을 더 잘 표현해야한다면, 저는 이것을 아주 잘 알고 있습니다! – BobbyTee

관련 문제