2014-07-24 2 views
2

활동이 2 개의 서비스를 시작해야하는 상황이 있습니다. 하나는 바운드이고 하나는 그렇지 않습니다.Android - 활동에서 서비스로 콜백을 전달합니다.

바운드는 활동에 Ibinder를 반환합니다. 그러나 액티비티는 두 서비스에 콜백을 제공하는 방법이 필요합니다. 즉 두 서비스가 모두 액티비티의 중첩 클래스에있는 일부 메소드를 호출 할 수 있어야합니다.

가장 좋은 방법은 무엇입니까? 서비스에서 브로드 캐스트를 사용하고 onReceive()에서 원하는 API를 호출해야합니까? 또는 내 활동의 IBinder를 의도 된대로 서비스에 전달할 수 있습니까? 서비스에서이를 사용하여 IPC 콜백을 할 수 있습니까?

편집은이 개 서비스가 활동 이외의 다른 응용 프로그램에 .. 명확하게 잊어 버렸습니다.

+1

사용 Broadcaster –

답변

2

당신은 내가이 시나리오에 대한 최선의 선택 EventBus 또는 오토

EventBus 이벤트를 공개/등록 최적화 된 안드로이드입니다 믿는 IntentActivity

에 대한 보내기 LocalBroadcastManager를 사용하는 수 버스. A Android 앱의 일반적인 사용 사례는 Activities, Fragments 및 배경 스레드를 함께 붙입니다. 이러한 요소를 기존 방식으로 배선하면 은 종종 복잡하고 오류가 발생하기 쉬운 종속성을 나타내며 수명주기는 입니다. EventBus가 모든 참여자를 통해 청취자를 전파하면 (예 : 배경 서비스 -> 활동 -> 여러 단편 또는 도우미 클래스) 더 이상 사용되지 않습니다. EventBus는 이벤트 송신자와 수신자를 분리하여 앱 구성 요소 간의 통신을 단순화합니다. 코드가 작고 품질이 좋습니다. 단일 인터페이스를 구현할 필요가 없습니다.

+0

두 서비스가 다른 앱에 있다면 어떻게 될까요? (나는 그 질문에 명확하게 진술하지 않았다) – Jake

+0

@ 제이크, 예, 명확하지 않았습니다! http://stackoverflow.com/questions/24876319/using-intents-as-a-form-of-message-passing/24876668#24876668을 참조하십시오. –

관련 문제