0

既に実行されていることがわかっているサービスがあります。サービスを再起動せずにアクティビティがサービスと通信する方法を教えてください。

詳しく説明すると、サービスを開始するウィジェットがあり、クリックするとアクティビティが読み込まれます。そのシナリオでは、サービスはまだ実行されているはずです。

次の行に沿って何かを行うにはどうすればよいですか。

  • サービスが有効かどうかを条件付きでチェックする
  • サービスのメソッドへのアクセス

基本的に、私がやりたくない主なことはstartService(new Intent(...))、アクティビティ内で実行することです。onStartサービス内で再度実行したくありません。

理想的には、プロジェクト内の他のパブリック メソッドを呼び出すように、サービス クラス内にいくつかのメソッドを追加し、それらをアクティビティ内で呼び出すことができます。

サービス内でいくつかの新しいスレッドを開始したいのですが、必要がなければ 2 つ目のサービス クラスを作成したくありません。

洞察をありがとう

4

1 に答える 1

2

のドキュメントstartService()が役立つ場合があります。

特定のアプリケーション サービスの開始を要求します。Intent には、開始する特定のサービス実装の完全なクラス名を含めるか、開始するサービスの種類のアクションおよびその他のフィールドによる抽象定義を含めることができます。このサービスがまだ実行されていない場合は、インスタンス化されて開始されます (必要に応じてプロセスを作成します)。実行中の場合は、実行中のままです。

...

戻り値

サービスが開始中またはすでに実行中の場合は、開始された実際のサービスの ComponentName が返されます。サービスが存在しない場合は null が返されます。

そのため、サービスが既に実行されている場合startService()、新しいバージョンは開始されません。

于 2012-12-23T22:32:49.483 に答える