2012-07-12 3 views
2

고객의 응용 프로그램에서 사용할 회사 API에 대한 Android SDK를 작성해야합니다. SDK에는 sparate 프로세스에서 실행중인 백그라운드 서비스가 포함됩니다 (AndroidManifest.xml에서 서비스에 대해 android:process="com.my.sdk.process" 설정).Android에서 여러 앱이 원격 서비스를 공유하는 방법은 무엇인가요?

내 SDK를 사용하는 응용 프로그램이 여러 개있는 경우 자원을 절약하기 위해 각 응용 프로그램이 하나의 인스턴스를 소유하지 않고 어떻게 하나의 서비스 프로세스 인스턴스 만 존재하도록 할 수 있습니까?

+0

이 경우에는 aidl 서비스 메커니즘을 사용해야합니다. developer.android.com에서 검색하십시오. aidl을 사용하는 방법에 대한 적절한 예가 있습니다. – AAnkit

답변

1

가장 쉬운 방법은 별도의 APK에 서비스를 제공하는 것입니다.이 서비스는 사용자가 APP 설치 과정을 거치지 않아도됩니다.

그러나 올바르게 이해하면이 문제를 피하고 모든 클라이언트 응용 프로그램에 동일한 서비스의 인스턴스가 있고 그 중 하나가 주어진 시점에 선출되므로 모든 클라이언트가 다음과 같이 통신합니다. AIDL을 사용하여 선택한 서비스.

나는 그것을 시도하지 않은 그러나 우리는 다음과 같은 1) 별도의 프로세스에서 서비스를 호스트를 시도 할 수 있지만 모든 클라이언트에 존재하여 SDK에서 같은 2), 사용하여 서비스를 결합 공유 한 인 텐트 인 텐트 intent = 새 인 텐트 ("this.should.be.same.for.everybody");

각 Apps의 모든 서비스 코드가 콜백을 수신해야합니다. 을 기반으로 선거/선택 논리를 구현할 수 있습니다. 1) 최신 버전 2) 첫 번째 사용 가능 3) 기능 .. 등등.

또한 업데이 트 가 어떤 경우) 실행중인 서비스 해제를 호스팅하는 응용 프로그램은 2를 설치하면 어떻게 다음과 같은 경우 1)의 오버 헤드를 가지고 있어야

(가) 현재 실행중인 서비스를 업데이트 (b) 실행 중이 아니지만 업데이트 후, 선택 후보가되는 서비스를 업데이트합니다.

작동하는지 알려주세요.

관련 문제