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