私はAndroidのサービスを研究し、多くの場合、このようなコードを参照しています:
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}
.Stub
何ですが?
質問2:
私は「AIDL」をチェックし、私たちは代わりにJavaインタフェースファイルのそれを使用する必要がある理由を知りたいですか?
私はAndroidのサービスを研究し、多くの場合、このようなコードを参照しています:
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}
.Stub
何ですが?
質問2:
私は「AIDL」をチェックし、私たちは代わりにJavaインタフェースファイルのそれを使用する必要がある理由を知りたいですか?
'スタブ(Stub)'は、ローカルインターフェースのようにリモートインターフェースを実装するクラスです。これは、データのマーシャリング/アンマーシャリング、およびリモートサービスとの送受信を処理します。 「スタブ」という用語は、一般に、他のRPCメソッド(COM、Javaリモート処理など)でこの機能を記述するために使用されますが、わずかに異なることを意味します。
IDL(Interface Definition Language)は一般的に言語に依存しないため、理論的にはC++またはPythonのスタブコードを生成できます。 Androidの1つはJavaベースですが、その区別は微妙です。 1つの違いは、.aidlファイルには1つのインタフェースのみを持つことができますが、Javaでは.javaファイルごとに複数のクラス/インタフェースが可能です。タイプがサポートされているいくつかのルールもあるので、Javaインターフェイスとまったく同じではなく、AIDLではなくタイプを使用することはできません。
こんにちは、このhttp://developer.android.com/guide/components/aidl.htmlをご確認ください。それはスタブとAIDLを理解するのに役立ちます。
私はまだ混乱しています。多分私はもっと時間が必要です。異なるコンピュータ言語でのIPCの実装については同じですか?またはそれらは異なっていますが、それらのすべてがそのようなことをする必要があります。そして、特にSDKに基づくJavaでは、IDLを使用すると簡単になりますか?私はこれをこのように説明できますか? Nikolayありがとうございました。 – AmyWuGo
これは一般的な概念です。 AndroidでAIDL以外のものを実装することはおそらく可能ですが、標準ではないため、唯一の標準的なRPCメカニズムとしてAIDLを考えることができます。 –
ここから始めて基本的なアイデアを得ることができます:http://en.wikipedia.org/wiki/Remote_procedure_call –