《Android移动应用开发》Android接口定义语言_第1页
《Android移动应用开发》Android接口定义语言_第2页
《Android移动应用开发》Android接口定义语言_第3页
《Android移动应用开发》Android接口定义语言_第4页
《Android移动应用开发》Android接口定义语言_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AIDL2024/1/29092024/1/29认识AIDL目录CONTENT1使用AIDL2参考教材:《Android应用开发项目化教程》认识AIDL源起在Android系统中,每个应用程序都运行在自己的进程中,进程之间一般是无法直接进行数据交换的,而为了实现跨进程通信(IPC:InterprocessCommunication),Android提供了一种Binder机制,而这个机制使用的接口语言就是:AIDL。AIDL是处理多线程、多客户端并发访问的优先选择。1认识AIDL特征AIDL(AndroidInterfaceDefinitionLanguage)是一种IDL语言,用于生成可以在Android设备上两个进程之间进行进程间通信的代码。AIDLIPC机制是面向接口的,更加轻量级。这种接口语言并非真正的编程语言,只是定义两个进程间的通信接口而已!而生成符合通信协议的Java代码则是由AndroidSDK的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接口。实现publicvoidwriteToParcel(Parcelout)方法,以便可以将对象的当前状态写入包装对象中。增加名为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)将返回值转换为YourInterf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论