1、android散记-AIDL接口定义语言
2012-07-09 15:54
453 查看
AIDL简介:
Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。
为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。
简单点说, AIDL就是跨进程通信,实现进程(应用)间的数据共享。随着应用的复杂化,单一的应用已很难满足用户的需求 ,这时IPC(进程间通信)就显得尤为重要。比如启动一个应用(进程)时连带着启动另一个应用为其处理复杂问,使应用运行起来也更流畅,用户体验也更好。
在Linux的概念空间中,Android的每个Activity都是一个独立的进程,每个Service也都是一个独立的进程,Activity,Service之间要交换数据属于IPC。IBinder就是为了Activity Service通讯而设计的一个轻量级的IPC框架。IBinder传递的数据被封装到android.os.parcel(注意parcel并非通用的序列化机制,而是专为IBinder设计的)客户端通过IBinder发送请求给服务端,服务端提供实际服务。
——————————————————————————————————————————————————————————————————
实现AIDL的步骤
1、创建AIDL文件
2、实现AIDL文件生成的java接口。
3、向客户端提供接口(一般通过Service实现)
4、客户端调用
——————————————————————————————————————————————————————————————————
创建AIDL文件
AIDL文件的语法跟Java的语法几乎一致,只是文件的扩展名不是.java而是.aidl
DataProvider是Service的子类,DataProvider类中定义了一个内嵌类(AidlImpl),该类是MyAidl.Stub的子类 。 MyAidl.Stub是根据MyAidl.aidl文件自动生成的,一般并不需要管这个类的内容,只需要编写一个继承于MyAidl.Stub类的子类(即AidlImpl)即可。onBind方法必须返回AidlImpl类的对象实例,否则客户端无法获得服务对象。
Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。
为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。
简单点说, AIDL就是跨进程通信,实现进程(应用)间的数据共享。随着应用的复杂化,单一的应用已很难满足用户的需求 ,这时IPC(进程间通信)就显得尤为重要。比如启动一个应用(进程)时连带着启动另一个应用为其处理复杂问,使应用运行起来也更流畅,用户体验也更好。
在Linux的概念空间中,Android的每个Activity都是一个独立的进程,每个Service也都是一个独立的进程,Activity,Service之间要交换数据属于IPC。IBinder就是为了Activity Service通讯而设计的一个轻量级的IPC框架。IBinder传递的数据被封装到android.os.parcel(注意parcel并非通用的序列化机制,而是专为IBinder设计的)客户端通过IBinder发送请求给服务端,服务端提供实际服务。
——————————————————————————————————————————————————————————————————
实现AIDL的步骤
1、创建AIDL文件
2、实现AIDL文件生成的java接口。
3、向客户端提供接口(一般通过Service实现)
4、客户端调用
——————————————————————————————————————————————————————————————————
创建AIDL文件
AIDL文件的语法跟Java的语法几乎一致,只是文件的扩展名不是.java而是.aidl
DataProvider是Service的子类,DataProvider类中定义了一个内嵌类(AidlImpl),该类是MyAidl.Stub的子类 。 MyAidl.Stub是根据MyAidl.aidl文件自动生成的,一般并不需要管这个类的内容,只需要编写一个继承于MyAidl.Stub类的子类(即AidlImpl)即可。onBind方法必须返回AidlImpl类的对象实例,否则客户端无法获得服务对象。
相关文章推荐
- android接口定义语言(AIDL)的使用示例
- ANDROID AIDL(安桌接口定义语言)
- Android AIDL(接口定义语言)简单理解和基本使用方法
- Android Interface Definition Language (AIDL) android接口定义语言 开发文档翻译 - 1
- android绑定远程服务以及android接口定义语言(aidl)
- Android接口定义语言---AIDL(三)
- Android接口定义语言---AIDL(二)
- Android 接口定义语言(AIDL)
- Android接口定义语言(AIDL)
- Android接口定义语言---AIDL(四)
- Android学习之跨进程通信安卓接口定义语言AIDL(一)
- Android接口定义语言(AIDL)
- AIDL(AndroidInterfaceDefinitionLanguage:接口定义语言)
- Android接口定义语言---AIDL(一)
- Android Interface Definition Language (AIDL) android接口定义语言 开发文档翻译 - 2
- Android笔记三:Android 接口定义语言 (AIDL)--传递对象
- aidl(android 接口定义语言)
- Android 接口定义语言 (AIDL)
- AIDL android接口定义语言
- AIDL_android接口定义语言_IPC_实现远程访问其他程序的服务