Android に存在するすべての IPC メカニズムを教えてください。
私の知る限りでは:
- インテント
- バインダー
Android に存在するすべての IPC メカニズムを教えてください。
私の知る限りでは:
IPC はプロセス間通信です。さまざまなタイプの Android コンポーネントが相互に通信するために使用するメカニズムについて説明します。
1)Intents
コンポーネントが送受信できるメッセージです。これは、プロセス間でデータを渡すための普遍的なメカニズムです。インテントの助けを借りて、サービスやアクティビティを開始したり、ブロードキャスト レシーバーを呼び出したりすることができます。
2)Bundles
通過するデータのエンティティです。これはオブジェクトのシリアル化に似ていますが、Android でははるかに高速です。getExtras()
バンドルは、メソッドを介してインテントから読み取ることができます。
3)Binders
アクティビティとサービスが別のサービスへの参照を取得できるようにするエンティティです。サービスにメッセージを送信するだけでなく、それらのメソッドを直接呼び出すことができます。
Android には 3 種類の IPC メカニズムがあります。
この投稿では、すべての答えが適切で簡潔です。しかし、どのIPC メカニズムを使用すればよいかを明らかにしたいと思います。まず第一に、2 つのアプリケーションまたはプロセスがデータをやり取りすることで相互に通信するIPC
ことを意味します。Inter Process communication
android は組み込みデバイスや小型デバイス向けであるため、 serialization
for を使用するべきではなく、内部で使用する which をIPC
使用できます。共有メモリの概念を使用した一種の軽量シリアル化です。BINDERs
parcels
Parcel
Binder IPC と Serialization IPC には多くの違いがあります。
1.シリアライゼーションは、組み込みデバイスで使用するには非常に重いため、通信が非常に遅くなります。
2.バインダーはパーセルを使用して IPC を非常に高速にします。
3.バインダーは、2 つのプロセス間でデータを共有しながらメモリの使用量を減らす共有メモリの概念を内部的に使用します。
結論: Binders
メモリの使用量が少なく、区画を使用するため非常に高速です。Serialization
は非常に重く、データの送受信に時間がかかり、バインダーに比べて多くのメモリを必要とします。
注:アクティビティ、サービス、およびレシーバーの間でデータを渡すには、Bundlesのみを使用します。シリアライゼーションまたはバインダーのいずれにも行かないでください。バインダーは、2 つのプロセスが通信するバインダー サービスにのみ使用されます。
お役に立てれば :)
IPC メカニズムには次の 3 つのタイプがあります。