首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在java中“Stub”和"AIDL“是什么?

在java中“Stub”和"AIDL“是什么?
EN

Stack Overflow用户
提问于 2012-05-18 07:14:47
回答 3查看 27.6K关注 0票数 33

问题1:

我正在研究Android服务,经常看到这样的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}

什么是.Stub

问题2:

我检查了"AIDL",但我想知道为什么我们必须使用它而不是Java接口文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-18 07:30:37

‘'Stub’是一个实现远程接口的类,你可以像使用本地接口一样使用它。它处理数据编组/解组以及向/从远程服务发送/接收数据。术语“存根”通常用于描述其他RPC方法(COM、Java remoting等)中的这种功能,但它的含义可能略有不同。

接口定义语言通常是独立于语言的,理论上您可以从它生成C++或Python存根代码。Android one是基于Java的,所以区别是微妙的。一个不同之处在于,在一个.aidl文件中只能有一个接口,而Java允许每个.java文件有多个类/接口。还有一些支持类型的规则,因此它与Java接口并不完全相同,您不能使用AIDL来代替AIDL。

票数 36
EN

Stack Overflow用户

发布于 2019-04-30 21:13:36

在AIDL文件中,可以使用远程服务的方法签名来定义接口。AIDL解析器从接口生成Java类,该类可用于两个不同的目的。

  1. 它生成一个Proxy类来为客户端提供对服务的访问,
  2. 它生成一个abstract Stub类,服务实现可以使用这个类通过远程方法的实现将其扩展为匿名类。

换句话说,

  • 在编译AIDL android项目时,需要为ISampleSevice.java文件生成ISampleSevice.aidl
  • ,它会有一个抽象的Stub类和一个Proxy类,
  • 远程服务必须创建一个Stub类对象,客户端调用java onBind()时必须返回给客户端一个Stub类对象,<代码>H221<代码><代码>H122<代码>在客户端的<代码>D23处,用户可以获取在远程服务中定义的存根的代理对象( ISampleService.Stub.asInterface()返回代理类)。
  • 代理对象可用于在服务进程中调用存根类实现的远程方法。
票数 6
EN

Stack Overflow用户

发布于 2012-05-18 09:04:27

嘿,请检查一下这个http://developer.android.com/guide/components/aidl.html。它将帮助您理解存根和AIDL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10648280

复制
相关文章
【Binder 机制】AIDL 分析 ( 分析 AIDL 文件生成的 Java 源文件 | Binder | IBinder | Stub | Proxy )
在上一篇博客 【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 ) 创建了 AIDL 文件 , 并编译生成了 AIDL 文件对应的 Java 源文件 , 现在开始分析生成在 " AIDL_Demo\app\build\generated\aidl_source_output_dir\debug\out\kim\hsl\aidl_demo " 目录 中的 " IMyAidlInterface.java " 源文件 ;
韩曙亮
2023/03/29
1.8K0
[003]AIDL是什么
AIDL是什么?还记得好多面试知识点中提到,应用之间的跨进程通信有哪些方式,AIDL好几次被作为正确答案来说,其实这是大错特错,其实AIDL就是帮程序员偷懒的封装类。AIDL只是对Binder和BinderProxy对象进行一层分装。
王小二
2020/06/08
1.4K0
[003]AIDL是什么
java中的stringbuffer是什么_java中&和&&的区别
JAVA提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。
全栈程序员站长
2022/11/08
9150
a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?
1、在JAVA程序中由String和“+”参与的运算变量都会被转为字符类型,可以理解为先把32313133353236313431303231363533e4b893e5b19e31333335313237变量转为字符型然后在进行字符拼接。
全栈程序员站长
2022/09/08
17K0
a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?
Mock 与 Stub
这是软件大师Martin Fowler的一篇经典博文。Martin大师在文章中详细的解释了Mock与Stub的区别,以及怎样使用它们进行TDD实践等等一系列干货,强烈推荐阅读,猛击这里阅读原文。我无意把大师的话再复述一遍,所以在本文中我就聊聊我对Mock与Stub的理解以及一些实践。
Allen Cheng
2018/09/10
1.6K0
Android基础进阶之学习使用AIDL进行跨进程通信
AIDL是什么 ---- AIDL (Android Interface Definition Language), 即接口定义语言,Android提供的IPC (InterProcess Communication,进程间通信)的一种独特实现。 借助它,你可以定义接口,使得客户端和服务端之间实现进程间通信。对android来说,一个进程无法通过正常的方法来访问另一个进程的内存空间。可以说,他们需要把对象分解成操作系统可以理解的原子类型,然后使对象突破限制在不同进程之间进行传输。具体实现这种机制的代码写起来
用户1263308
2018/02/01
6510
Android基础进阶之学习使用AIDL进行跨进程通信
一步步深入解析AIDL
在 Android 系统中,进程间通信 (IPC) 是一种很重要的机制。IPC 产生的原因是某些情况下需要在两个进程之间进行一些数据的交换。而在深入学习 Android 的过程中难免会遇到 IPC 的相关问题,比如常见的有在自己的应用程序中读取手机联系人的信息,这就涉及到 IPC 了。因为自己的应用程序是一个进程,通讯录也是一个进程,只不过获取通讯录的数据信息是通过 Content Provider 的方式来实现的。
俞其荣
2022/07/28
6430
一步步深入解析AIDL
在JavaScript中,“=” 、“==”和“===”的区别是什么
上述代码中,5 和 "5" 在使用 == 进行比较时会被转换为相同的类型,然后判断它们的值是否相等。
王小婷
2023/10/16
4980
Android系统服务(SystemService)简介
我们在Android开发过程中经常会用到各种各样的系统管理服务,如进行窗口相关的操作会用到窗口管理服务WindowManager,进行电源相关的操作会用到电源管理服务PowerManager,还有很多其他的系统管理服务,如通知管理服务NotifacationManager、振动管理服务Vibrator、电池管理服务BatteryManager…… 这些Manager提供了很多对系统层的控制接口。对于App开发者,只需要了解这些接口的使用方式就可以方便的进行系统控制,获得系统各个服务的信息,而不需要了解这些接口的具体实现方式。而对于Framework开发者,则需要了解这些Manager服务的常用实现模式,维护这些Manager的接口,扩展这些接口,或者实现新的Manager。
233333
2020/03/18
1.9K0
Binder 进程通信
对应一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间,当然内核空间的大小是可以通过参数配置调整的。对于用户空间,不同进程之间彼此是不能共享的,而内核空间却是可共享的。Client进程向Server进程通信,恰恰是利用进程间可共享的内核内存空间来完成底层通信工作的,Client端与Server端进程往往采用ioctl等方法跟内核空间的驱动进行交互。
Yif
2019/12/26
8640
Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html
codingblock
2018/10/09
6170
Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
Android跨进程通信IPC之11——AIDL
设计这门语言的目的是为了实现进程间通信,尤其是在涉及多进程并发情况的下的进程间通信IPC。每一个进程都有自己的Dalvik VM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自己的操作,都在自己的那个空间里操作。每个进程都是独立的,你不知我,我不知你。就像两座小岛之间的桥梁。通过这个桥梁,两个小岛可以进行交流,进行信息的交互。
隔壁老李头
2018/08/30
1.6K0
Android跨进程通信IPC之11——AIDL
不得不说的Android Binder机制与AIDL
说起Android的进程间通信,想必大家都会不约而同的想起Android中的Binder机制。而提起Binder,想必也有不少同学会想起初学Android时被Binder和AIDL支配的恐惧感。但是作为一个Android开发者,Binder是我们必须掌握的知识。因为它是构架整个Android大厦的钢筋和混凝土,连接了Android各个系统服务和上层应用。只有了解了Binder机制才能更加深入的理解Android开发和Android Framework。这也是为什么无论是《Android开发艺术探索》还是《深入理解Android内核涉及思想》这些进阶类书籍把进程间通信和Binder机制放到靠前章节的原因,它太重要了,重要到整个Android Framework都离不开Binder的身影。
没关系再继续努力
2021/12/28
5880
Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html
codingblock
2018/10/09
1.1K0
Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
Binder学习指南
毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。
weishu
2018/09/05
1.7K0
Binder学习指南
Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 在上一篇博文中介绍了一种轻量级的跨进程通讯方案-Messenger,Messenger实现起来非常简单,其底层原理也是AIDL,更像是一个简易版的AIDL,但简单的东西往往也有其局限性,Messenger的主要作用是传递消息,它无法实现RPC功能也就是无法让我们在客户端本地就能调用远程的方法,而且Messenger是以串行的方式处理,无法同时处理多个请求,只能一个一
codingblock
2018/03/30
1.9K0
【Binder 机制】AIDL 分析 ( AIDL 通信完整流程梳理 )
AIDL 文件 IMyAidlInterface.aidl 在客户端和服务端都有 , 编译时 , 都会在 " build\generated\aidl_source_output_dir\debug\out\kim\hsl\aidl_demo " 目录生成 IMyAidlInterface.java 源文件 ;
韩曙亮
2023/03/29
1.4K0
【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )
右键点击 " aidl " 目录 , 选择 " New / AIDL / AIDL File " 文件 ;
韩曙亮
2023/03/29
1.1K0
【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )
Android 中的Binder跨进程通信机制与AIDL
如果对进程、线程概念还很懵懂的同学可以看一下之前发表的一篇博客,里面是基础概念: IPC进程间通信/跨进程通信 http://blog.csdn.net/github_33304260/article/details/52895331
先知先觉
2019/01/21
8490
Android 进阶7:进程通信之 AIDL 的使用
张拭心 shixinzhang
2018/01/05
1.1K0
Android 进阶7:进程通信之 AIDL 的使用

相似问题

AIDL在android中的优势是什么?

11

Java方法Stub

22

更改java和aidl文件的包名

11

在rhino中混合stub和mock

20

org.omg.stub.java.rmi._Remote_Stub不兼容

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文