質問1:
私はAndroidサービスを勉強していて、次のようなコードをよく目にします。
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}
何.Stub
ですか?
質問2:
「 AIDL 」をチェックしましたが、Javaインターフェイスファイルの代わりにそれを使用する必要がある理由を知りたいですか?
「スタブ」は、あたかもローカル インターフェイスであるかのように使用できる方法でリモート インターフェイスを実装するクラスです。これは、データのマーシャリング/アンマーシャリング、およびリモート サービスとの間の送受信を処理します。「スタブ」という用語は、通常、他の RPC メソッド (COM、Java リモート処理など) でこの機能を説明するために使用されますが、意味が少し異なる場合があります。
IDL (Interface Definition Language) は一般に言語に依存せず、理論的にはそこから C++ または Python スタブ コードを生成できます。ただし、Android のものは Java ベースであるため、違いは微妙です。1 つの違いは、Java では .java ファイルごとに複数のクラス/インターフェースを許可するのに対し、.aidl ファイルには単一のインターフェースしか持てないことです。また、サポートされる型にはいくつかのルールがあるため、Java インターフェイスとまったく同じではなく、AIDL の代わりに使用することはできません。
このhttp://developer.android.com/guide/components/aidl.htmlを確認してください。スタブと AIDL を理解するのに役立ちます。