问题一:
我在研究Android服务,经常看到这样的代码:
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}
什么是.Stub
?
问题 2:
我检查了“AIDL”,但我想知道为什么我们必须使用它而不是 Java 接口(interface)文件?
最佳答案
'Stub' 是一个实现远程接口(interface)的类,您可以像使用本地接口(interface)一样使用它。它处理数据编码/解码以及向/从远程服务发送/接收。术语“ stub ”通常用于描述其他 RPC 方法(COM、Java 远程处理等)中的此功能,但它的含义可能略有不同。
IDL(接口(interface)定义语言)通常与语言无关,理论上您可以从中生成 C++ 或 Python stub 代码。 Android 是基于 Java 的,所以区别很微妙。一个区别是您在 .aidl 文件中只能有一个接口(interface),而 Java 允许每个 .java 文件有多个类/接口(interface)。对于支持的类型也有一些规则,因此它与 Java 接口(interface)并不完全相同,并且不能使用一个来代替 AIDL。
关于android - java中的 "Stub "和 "AIDL"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648280/