2011-01-17 9 views
21

親愛なるすべて、 私はAndroidにnewbiewです。私はAndroidサービスに関する多くの記事を読んだことがありますが、ローカルサービスとリモートサービスの間の違いを明確に理解していません(「ローカルサービスはランチアクティビティと同じプロセスで実行され、リモートサービスはそれぞれのプロセスで実行されます」 - Android開発へのビジターコーダーのガイド - Mark L. Murphy)リモートサービスとローカルサービス

  1. ローカルサービスとリモートサービスの違いを教えてください。
  2. ローカルサービスを使用する利点と欠点は何ですか?
  3. リモートサービスを使用するメリットとデメリットは何ですか?

おかげ&宜しく 大息子

答えて

10

あなたの説明は正確にローカルとリモートサービスとの間の差です。何も言うことはありません。ほとんどの場合、リモートサービスを使用したくないでしょう。

+0

親愛なるFalmarri、あなたの役に立つ答えに感謝します。 –

+3

明確で簡潔な回答をいただきありがとうございます!私はそれが重要な設計上の決定であり、アンドロイドのリモートサービスのIPC/AIDLに関するチュートリアルを見てきましたが、なぜそれを採用するのかは明らかではありません。あなたの答えでは、これらのリモートサービスは、複数の*アプリケーション*が共通のバックグラウンドの「サービス」を照会することを計画している場合にのみ有効であると思われます。そうでなければ、ローカルのサービスとしてサービスを持ち、時間のかかるタスク...私の理解が間違っている場合は、私はコーディングを始めようとしています: – sradforth

+1

@sradforth: 'これらのリモートサービスは、複数のアプリケーションが共通の背景 'service''を照会することを計画している場合にのみ役に立ちます。リモートサービスのユースケースの詳細もう1つは、サービスを開始したくない場合や、バックグラウンドで継続的に実行する必要がある場合です(悪い!)、アプリケーション全体が多くのRAMを必要とする場合は、リモートでサービスを実行して、プロセスのメモリマップを分離することができます。私は都市部のプッシュサービスがこれを使用していることを知っています。しかし、正直言って、私はそれが非常にまれなことに、「最良の」デザインだと思います。 – Falmarri

2

リモートサービスとローカルサービスとの間の差である:ローカルサービスは、同じプロセス内で実行され、リモート・サービスは、異なるプロセスで実行され、異なるアプリケーションであってもよいです。

あなたは、異なるアプリケーションで実行されているリモートサービスにアクセスすることができますが、別のアプリケーションで実行されているローカルサービスにアクセスすることはできません。

0

ローカルサービスは、おそらく同じアプリケーション内で同じプロセスで実行されることを意味します。メソッドstartService()を使用してサービスを開始することができ、stopService()メソッドを使用してサービスを停止することができます。これらの2つのライフサイクルメソッドまたはサービスとリモートサービスは、通常、異なるアプリケーションで実行されます。 AIDLインターフェイスを作成してアクセスし、バインダーを使用してリモートサービスに接続できます。

-1

あなたは本当にnewbiewだと思うし、私も^^。私は知っているだけでなく、私も説明します。

ローカルサービスは、プロセスメモリを通じてアクティビティと通信します。これはすばやく簡単です。ローカルサービスでプラグインのようなマルチプロセスプログラムを実装することはできません。

しかし、リモートサービスは他のプロセスと通信できます。プラグインのようなプログラムを作ることができます。それほど高速ではありませんが(しかし十分かもしれません)。あなたはOSに "私とのコミュニケーションが欲しい"と頼むからです。これは...ファイルシステム(パイプ)またはカーネルメモリ(バインダー)を介して起こる変数のルート、

ので、これは他のプロセスのcoummucationsと読まファイルまたはトラフィックので、高速ではありません。

関連する問題