Android에서 서로 다른 두 프로세스 (서비스 및 활동) 간의 통신을 관리 할 수 있습니다. via Messenger or AIDL : 활동이 서비스에 바인딩되면 충분합니다.서비스와 활동 (및 그 하위 활동) 간의 IPC를 처리하는 방법은 무엇입니까?
그러나이 활동에 하나 이상의 하위 활동이있는 경우 어떻게됩니까? 주요 활동이 하위 활동을 시작하는 순간부터 의사 소통 활동으로 방향을 바꾼다. 하위 활동이 파괴 될 때 마찬가지로, 나는 통신이 다시 주요 활동에 리디렉션하려는 등
예 # 1 :
- 이면 MyService < --- IPC ---> MainActivity
- MainActivity는 하위 활동 후이면 MyService
- 하위 활동이 파괴 < --- IPC ---> 하위 활동, 다음이면 MyService < --- IPC ---> MainActivity를 시작
예 2 :
- 이면 MyService
- MainActivity가 FirstSubActivity를 시작 < --- IPC ---> MainActivity, 다음이면 MyService < --- IPC ---> FirstSubActivity는
- FirstSubActivity는, SecondSubActivity을 시작합니다 이면 MyService < --- IPC ---> SecondSubActivity
- SecondSubActivity가 파괴되고, 다음이면 MyService < --- IPC ---> FirstSubActivity
- FirstSubActivity가 파괴되고, 다음 MyServi ce < --- IPC ---> MainActivity
어떻게 처리합니까?
[sendBroadcast] (http://developer.android.com/reference/android/content/Context.html#sendBroadcast%28android.content.Intent%29)에 대한 설명서에 따르면 수신기 및 수신기에서 결과가 전파되지 않습니다. 방송을 중단 할 수 없습니다. _ – enzom83
사실입니다. 그러나 당신의 예에서 나는 당신이 서비스와 활동 사이의 의사 소통에 하이라이트를 넣었다는 것을 보았습니다. 이전에 설명한 메커니즘은 간단하며 수신기 및 브로드 캐스트 인 텐트를 올바르게 사용하면 문제를 해결할 수 있습니다. (내 견해로는) –
물론, 나는 서비스의 의도를 수신하기 위해 액티비티의 브로드 캐스트 리시버를 사용할 수 있고, 액티비티의 의도를 수신하려면 서비스의 다른 브로드 캐스트 리시버를 사용할 수있다. 그러나 브로드 캐스트로 메시지를 보내면 특정 패키지에서만 수신 할 수 없으므로 4 이전 버전에서는 지원되지 않으므로 [_ 대체로 ICE_CREAM_SANDWICH로 시작하여 안전하게 Intent.setPackage_] (http://developer.android.com/reference/android/content/BroadcastReceiver.html)를 사용하여 단일 응용 프로그램으로 브로드 캐스트합니다. – enzom83