私はいくつかの同様の質問を読みました(たとえば、このリンクで)が、私が尋ねている問題は少し異なります。実際、私の場合、サービスはメソッドによって手動で開始されるstartServiceため、結果として、メソッドを使用してサービスを開始することはできませんbindService。
MainServiceサービスとMainServiceActivityアクティビティを含むパッケージがあるとします。ファイル「AndroidManifest.xml」では、このアクティビティはアクションMAINとカテゴリで宣言されていますLAUNCHER。このアクティビティは、を介してサービスを構成し、メソッドSharedPreferencesを呼び出してサービスを開始するために使用されますstartService。つまり、通常、ユーザーはを起動し、MainServiceActivityを構成/開始しMainServiceます。SecondActivity次に、別のパッケージの一部である別のアクティビティ(それを呼びましょう)について考えてみましょう。構成に応じて、サービスはstartActivityメソッドを使用してこのアクティビティを開始するため、この他のアクティビティはとは別のプロセスで実行されますMainService。アクティビティが実行されるとすぐに、サービスに通知する必要があります。- この時点で、
MainServiceとの間で通信要求/応答が開始されSecondActivityます。サービスは要求を送信し、アクティビティは応答を送信します。
メッセージングを介した通信は適切かもしれませんが、メソッドMainServiceを介して開始されるため、サービスにバインドするアクティビティからメソッドを呼び出すことはできません。startServicebindService
UtilityServiceそれから私は、同じパッケージの一部である追加のサービス(それを呼びましょう)を利用するというアイデアを思いつきましたMainService:メソッドUtilityServiceを使用して開始することができますbindService。結果として:
- が実行されるとすぐに、 ;
MainServiceへのバインドが実行される場合があります。UtilityService MainService外部アクティビティ(上記など)を起動するとSecondActivity、このアクティビティはにバインドされUtilityServiceます。
このようにして、MainServiceとの両方SecondActivityがに接続されUtilityService、後者は通信の仲介役として機能します。
このアイデアに代わるものはありますか?