72

Android に存在するすべての IPC メカニズムを教えてください。

私の知る限りでは:

  1. インテント
  2. バインダー
4

7 に答える 7

97

IPC はプロセス間通信です。さまざまなタイプの Android コンポーネントが相互に通信するために使用するメカニズムについて説明します。

1)Intentsコンポーネントが送受信できるメッセージです。これは、プロセス間でデータを渡すための普遍的なメカニズムです。インテントの助けを借りて、サービスやアクティビティを開始したり、ブロードキャスト レシーバーを呼び出したりすることができます。

2)Bundles通過するデータのエンティティです。これはオブジェクトのシリアル化に似ていますが、Android でははるかに高速です。getExtras()バンドルは、メソッドを介してインテントから読み取ることができます。

3)Bindersアクティビティとサービスが別のサービスへの参照を取得できるようにするエンティティです。サービスにメッセージを送信するだけでなく、それらのメソッドを直接呼び出すことができます。

于 2011-04-21T06:31:56.023 に答える
40

Android には 3 種類の IPC メカニズムがあります。

  1. インテント (バンドルと一緒に)
  2. バインダー
  3. ASHMEM (匿名共有メモリ) - Linux 共有メモリとこの共有メモリの主な違いは、Linux では他のプロセスが共有メモリを解放できないことですが、他のプロセスがメモリを必要とする場合、このメモリは Android OS によって解放されます。
于 2011-05-09T09:40:49.853 に答える
23

この投稿では、すべての答えが適切で簡潔です。しかし、どのIPC メカニズムを使用すればよいかを明らかにしたいと思います。まず第一に、2 つのアプリケーションまたはプロセスがデータをやり取りすることで相互に通信するIPCことを意味します。Inter Process communicationandroid は組み込みデバイスや小型デバイス向けであるため、 serializationfor を使用するべきではなく、内部で使用する which をIPC使用できます。共有メモリの概念を使用した一種の軽量シリアル化です。BINDERsparcelsParcel

Binder IPC と Serialization IPC には多くの違いがあります。

1.シリアライゼーションは、組み込みデバイスで使用するには非常に重いため、通信が非常に遅くなります。

2.バインダーはパーセルを使用して IPC を非常に高速にします。

3.バインダーは、2 つのプロセス間でデータを共有しながらメモリの使用量を減らす共有メモリの概念を内部的に使用します。

結論: Bindersメモリの使用量が少なく、区画を使用するため非常に高速です。Serializationは非常に重く、データの送受信に時間がかかり、バインダーに比べて多くのメモリを必要とします。

注:アクティビティ、サービス、およびレシーバーの間でデータを渡すには、Bundlesのみを使用します。シリアライゼーションまたはバインダーのいずれにも行かないでください。バインダーは、2 つのプロセスが通信するバインダー サービスにのみ使用されます。

お役に立てれば :)

于 2016-02-17T07:57:07.427 に答える
6

IPC メカニズムには次の 3 つのタイプがあります。

  1. ハンドラ
  2. バインダーの実装
  3. AIDL
于 2012-09-17T11:50:10.837 に答える