2011-03-14 4 views
1

메인 스레드에서 서비스를 실행하는 안드로이드 응용 프로그램을 개발 중입니다. 그런 다음 별도의 apk 파일에있는 다른 활동을 실행합니다. 이 apk는 자체 서비스를 생성하고 원래 서비스와 정보 (복잡한 객체)를 교환 할 수 있어야합니다. 두 서비스가 모두 도움이된다면 안드로이드 라이브러리에 존재하기 때문에 둘 다 공유합니다. 이 기능을 수행 할 수있는 방법이 있습니까? 어떤 제한이 수반되며 어떤 방법으로 극복 할 수 있습니까?안드로이드 서비스 연결

답변

1

서비스 2는 서비스 1과 통신하려면 모두 작성해야합니다. 에 의해 '서비스가 안드로이드 라이브러리에 존재하는 경우 APK의 참조'은 안드로이드 시스템 서비스를 의미하며, 서비스 정의를 재정의하지 않는 한 가능하지 않을 것입니다.

안드로이드 시스템 서비스를 사용하고 있다면 서비스 1에 브로드 캐스트 리시버를 설치하여 서비스 2가 게시 할 수있는 모든 업데이트를 알릴 수 있습니다.

앱 1,2 및 서비스 1,2 모두가 모두 작성된 경우 인 텐트 번들을 사용하여 데이터를 공유 할 수 있기 때문에 달성하기가 어렵지 않다고 생각합니다.

+0

응답 해 주셔서 감사합니다. 두 가지 서비스 모두 저에게 쓰여졌습니다. 문제는 apk 2의 서비스 2에서 서비스 1에 액세스하는 것 같습니다.이 서비스를 사용하면 서비스에 액세스 할 수 없다는 것을 알게됩니다. 'Intent gf = new Intent(); gf.setClassName ("com.MyServices", "com.MyServices.Service1"); bindService (gf, mConnection, Context.BIND_AUTO_CREATE); ' 권한이 없다고 알려줍니다. 'Intent gf = new Intent ("com.MyServices.Service1");을 시도하면 자동으로 실패합니다. 어떤 시도도'mConnection'의'onServiceConnected'를 발생시키지 않습니다. – Dested

+0

당신이 이것을 조금 비워 봤기 때문에, APK가 서로 의사 소통하기를 원하기 때문에 내가 단순히 당신이라면 내 디자인을 다시 생각해 보겠다는 것을 지적합시다 .... 사용자가 아파? 위의 설정으로 무엇을 달성하고 싶은지 잘 모르겠지만 같은 APK 내에서 서로 다른 두 서비스간에 데이터를 교환 할 수는 있습니다. 당신이 여전히 다른 apk를 사용하고 싶다면 할 수있는 또 다른 일이있을 수 있습니다 : apk의 패키지에 같은 패키지 이름을 사용하고 그 사이에 sqlite db 파일을 공유하십시오 (아직 시도하지 않았습니다 : P) –

+0

apk1 isnt depend apk2에, 단지 비자. apk1이 제거되면 apk2가 더 이상 작동하지 않는다는 것을 알 수 있습니다. 동일한 apk 내에서 서로 다른 두 가지 서비스간에 데이터를 교환 할 수 있다고하지만, apk1이 apk2에서 직접 활동을 시작하면 2 명의 다른 apk간에 교환 할 수 있습니까? 솔직히 말해서, 내 문제가 무엇인지 완전히 모르겠다. 버그를 더 깊이보기 시작하기 전에 개념적으로 문제가 있는지 판단하려고 노력 중이다. – Dested