1

Android 開発者のリファレンス ページには明示的に記載されていない、サービスに関する基本的かつ実用的な事柄を知りたいです。

  1. まだ開始していない別のアプリからサービスを呼び出すにはどうすればよいですか?

  2. 他のアプリケーションによって提供されるサービスを照会するにはどうすればよいですか?

  3. サービスは UI メソッドを使用できますか? (ドキュメントには、ユーザーにUIを持たないことを特に意図していると書かれていますが、その例にはトーストが含まれています)

  4. サービスは再入可能ですか? (2 つのアプリが同じサービスを呼び出す場合、それらはローカル変数をいじることなく同時に「サービス」されますか)

  5. サービスはプラグインの作成方法ですか?

  6. サービスを使用して、既にインストールされているアプリの機能を拡張できますか? (つまり、サービスだけを「インストール」できますか

  7. サービスは通常のアクティビティを開始できますか? クライアントを終了させることができますか?


4

1 に答える 1

4

まだ開始していない別のアプリからサービスを呼び出すにはどうすればよいですか?

アクティビティなどのサービスは、システムの使用を通じて開始されますIntentstartService(intent);メソッドを使用してサービスを開始できます。これは、サービスが独自のサンドボックスの外部からインテントに応答するように適切に構成されている限り、アプリケーションの境界を越えます。

他のアプリケーションによって提供されるサービスを照会するにはどうすればよいですか?

ドキュメンテーション。サービスを正しく実行するために何を渡せばよいかわからないため、ドキュメントなしでアプリのサービスについてアプリに問い合わせる状況は想像できません。

サービスは UI メソッドを使用できますか? (ドキュメントには、ユーザーにUIを持たないことを特に意図していると書かれていますが、その例にはトーストが含まれています)

サービスはアプリケーション コンテキストにアクセスできます (したがって、独自のをポストしToastたり開始したりできます)。Activities同じサンドボックスで実行されているアプリを表示することもできます。これは、ハンドラーを使用して、実行中のアクティビティの UI を直接変更できることを意味します。ただし、その性質上Services、UI とのインターフェイスは可能ですが、UI とインターフェイスするようには設計されていません。

サービスは再入可能ですか? (2 つのアプリが同じサービスを呼び出す場合、それらはローカル変数をいじることなく同時に「サービス」されますか)

サービスは、さまざまなフラグで開始できます (また、別の方法でプログラムすることもできます)。これにより、サービスをIntents非同期で受信したり、順番に実行するためにキューに入れたりするIntentsことができます。これについての詳細を見つけることができます(および質問の残りの部分はここにあります)

サービスはプラグインの作成方法ですか?

プラグイン?

サービスを使用して、既にインストールされているアプリの機能を拡張できますか? (つまり、サービスだけを「インストール」できますか

startService()名前付きを使用していない場合、サービスを別のアプリとしてインストールできますIntent。ただし、このサービスは別のサンドボックスにあり、実行中のアプリの変数/状態にアクセスできません。

サービスは通常のアクティビティを開始できますか? クライアントを終了させることができますか?

はい、サービスが同じサンドボックスで実行されている場合、サービスと一緒に実行されているアプリを表示できます。アプリケーション コンテキストにアクセスできるので使用startActivity()でき、アプリ内で静的メソッドを呼び出すことができます (これには への静的アクセスを含めることができますActivity)。

于 2012-05-29T09:21:53.123 に答える