Androidを理解するAIDL
には、実際の例が 1 つ必要です。これは、開発のどのシナリオで使用する必要があるかを意味しますAIDL
。
Androidドキュメントを読むことで...混乱し、非常に多くの質問が発生するため、ドキュメント全体を読むのは困難です。誰か助けてください
電話の外と通信するためのものです。
または、さまざまなアプリとの通信 (他のアプリと通信する必要がある理由)
彼らがドキュメントで話しているサービスの種類
AIDL is used for Binder. Binder is a mechanism to do RPC calls on/from an Android Service.
When to use AIDL? When you need a Service. When do you need a Service? If you want to share data and control something in another application, you need a service using AIDL as an interface. (A Content Provider is used when sharing data only).
Services can be used within your application as the model roll in the MVC-pattern.
AIDL は Android インターフェイス定義言語です。これにより、基本的に IPC 呼び出しを行うことができます。
用途: 特定の情報を取得するために、あるプロセスが他のプロセスと通信する必要がある場合があります。
例:プロセス Aは、コール タイプを変更する必要があるかどうかを判断するために、コール ステータスの情報を必要とします (たとえば、オーディオからビデオへのコール、またはその逆)。特定のリスナーからコール ステータスを取得することはできますが、コール タイプをオーディオからビデオに変更するには、プロセス Aでフックを変更する必要があります。この「フック」またはコールを変更する方法は、通常、テレフォニー プロセスの一部であるテレフォニー クラスの一部です。そのため、テレフォニー プロセスからそのような情報を取得するために、テレフォニー サービス(Android テレフォニー プロセスの一部として実行される) を記述して、通話の種類をクエリまたは変更できるようにすることができます。ここのプロセスA(クライアント)は、と通信するこのリモートサービスを使用しているためコール タイプを変更するテレフォニー プロセス。サービスと対話するためのインターフェイスが必要です。テレフォニー サービスはプロバイダーであり、プロセス A (クライアント)はユーザーであるため、両方が理解して順守できるインターフェイス (プロトコル) について合意する必要があります。このようなインターフェースはAIDLであり、(リモート サービスを介して) テレフォニー プロセスと通信し、作業を完了させることができます。
簡単に言えば、AIDL はクライアントが取得する「合意」であり、サービスとの対話方法をクライアントに伝えます。サービス自体には、その契約書のコピーがあります (クライアント向けに公開されているため)。次に、サービスは、リクエストが到着したときの処理方法の詳細を実装するか、誰かが話しかけているときに言います
そのため、サービスを介してコールを変更するリクエストを処理し、サービスはリクエストを取得し、テレフォニー プロセスと通信し (その一部であるため)、コールをビデオに変更します。
注意すべき重要な点は、AIDL はマルチスレッド環境でのみ必要であるということです。マルチスレッド アーチを扱う必要がない場合は、バインダーを廃止できます。
もう 1 つの実際の例は、Google Play ライセンスが AIDL を使用していることです。