Android 10.4 Android接口定义语言.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AIDL * 09 * 认识AIDL 目录 CONTENT 1 使用AIDL 2 参考教材:《Android应用开发项目化教程》 认识AIDL 源起 在Android系统中,每个应用程序都运行在自己的进程中,进程之间一般是无法直接进行数据交换的, 而为了实现跨进程通信(IPC:Interprocess Communication),Android提供了一种Binder机制,而这个机制使用的接口语言就是: AIDL。 AIDL是处理多线程、多客户端并发访问的优先选择。 1 认识AIDL 特征 AIDL (Android Interface Definition Language)是一种IDL语言,用于生成可以在Android设备上两个进程之间进行进程间通信的代码。 AIDL IPC机制是面向接口的,更加轻量级。 这种接口语言并非真正的编程语言,只是定义两个进程间的通信接口而已!而生成符合通信协议的Java代码则是由Android SDK的 platform-tools目录下的aidl.exe工具生成,生成对应的接口文件在gen目录下,一般是:Xxx.java的接口! 而在该接口中包含一个Stub的内部类,该类中实现了在该类中实现了IBinder接口与自定义的通信接口, 这个类将会作为远程Service的回调类——实现了IBinder接口,所以可作为Service的onBind( )方法的返回值! 1 使用AIDL 使用AIDL实现IPC服务的步骤 1. 创建.aidl文件 该文件(YourInterface.aidl)定义了客户端可用的方法和数据的接口。 2.实现接口 AIDL编译器从AIDL接口文件中利用Java语言创建接口,该接口有一个继承的命名为Stub的内部抽象类(并且实现了一些IPC调用的附加方法),要做的就是创建一个继承于YourInterface .Stub的类并且实现在.aidl文件中声明的方法。 3. 向客户端公开接口 如果是编写服务,应该继承Service并且重载Service.onBind(Intent) 以返回实现了接口的对象实例 2 使用AIDL 创建.aidl文件 方法 在AS的main目录下新建一个aidl文件夹,然后定义一个和aidl包名相同的包,最后创建一个aidl文件,接着按ctrl + f9重新编译。 2 使用AIDL 创建.aidl文件 示例 2 使用AIDL 实现接口 编译结果 AIDL生成了与.aidl文件同名的接口。 生成的接口包含一个名为Stub的抽象的内部类,该类声明了所有.aidl中描述的方法,Stub还定义了少量的辅助方法,尤其是asInterface(),通过它或以获得IBinder(当applicationContext.bindService()成功调用时传递到客户端的onServiceConnected())并且返回用于调用IPC方法的接口实例。 2 使用AIDL 实现接口 示例 2 使用AIDL 向客户端公开接口 发布服务 继承Service,然后实现以Service.onBind(Intent)返回一个实现了接口的类对象。 2 使用AIDL 使用可打包接口传递参数 基本步骤(Parcelable) 实现Parcelabel接口。 实现public void writeToParcel(Parcel out) 方法,以便可以将对象的当前状态写入包装对象中。 增加名为CREATOR的构造器到类中,并实现Parcelable.Creator接口。 最后,但同样重要的是,创建AIDL文件声明这个可打包的类,如果使用的是自定义的编译过程,那么不要编译此AIDL文件,它像C语言的头文件一样不需要编译。 2 使用AIDL 使用可打包接口传递参数 基本步骤(Parcelable) 2 使用AIDL 调用IPC方法 基本步骤 声明.aidl文件中定义的接口类型的变量。 实现ServiceConnection 调用Context.bindService(),传递ServiceConnection的实现 在ServiceConnection.onServiceConnected()方法中会接收到IBinder对象,调用YourInterfaceName.Stub.asInterface((IBinder)service)将返回值转换为YourInterface类型 调用接口中定义的方法。应该总是捕获连接被打断时抛出的DeadObjectException异常,这是远端方法唯一的异常。 调用Context.unbindService()断开连接 2 Note: Using AIDL is necessary only if you allow clients fr

文档评论(0)

弹弹 + 关注
实名认证
文档贡献者

人力资源管理师、教师资格证持证人

该用户很懒,什么也没介绍

版权声明书
用户编号:6152114224000010
领域认证该用户于2024年03月13日上传了人力资源管理师、教师资格证

1亿VIP精品文档

相关文档