`
473687880
  • 浏览: 535291 次
文章分类
社区版块
存档分类
最新评论

Android高手进阶教程(二十五)之---Android 中的AIDL!!!

 
阅读更多

大家好,好久不见,今天要给大家分享的是android aidl的使用。在Android中, 每个应用程序都可以有自己的进程. 在写UI应用的时候, 经常要用到Service. 在不同的进程中, 怎样传递对象呢? 显然, Java中不允许跨进程内存共享. 因此传递对象, 只能把对象拆分成操作系统能理解的简单形式, 以达到跨界对象访问的目的. 在J2EE中,采用RMI的方式, 可以通过序列化传递对象. 在Android中, 则采用AIDL的方式. 理论上AIDL可以传递Bundle,实际上做起来却比较麻烦.


AIDL(AndRoid接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用这些参数组装成自己需要的对象.

AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.

今天的两个实例用到两个Android工程,一个是AIDL的服务端另一个是客户端。

服务端的实现步骤:

首先看一下服务端,工程目录如下:

首先创建IaidlServerService.aidl文件,代码如下(一个简单方法,另一个返回对象方法),当我们点击保存时会在gen目录下生成对应的java文件,如上图红色部分:

第二步:因为这个接口里有传递对象,所以对象要特殊处理一下,这里继承了Parcelable,Book.java代码如下:

如果大家不明的地方,请参见,下面连接的文章:

Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

第三步:写一个与Book类对应的aidl,命名为Book.aidl,代码非常简单,代码如下:

第四步:新建一个名为AidlServerService的Service.代码如下:

第五步:在AndroidManifest.xml注册Service,代码如下:

第六步:运行服务端工程,到设备上,好让客户端调用,服务端的Activity什么都没做.效果如下:

客户端的具体实现步骤:


第一步:新建客户端工程,目录结构如下:

第二步:引入Aidl文件以及用到的类,如上面的com.chapter8.aidl包。直接从服务端里代码copy过来就OK.

第三步:修改main.xml布局文件,增加一个按钮,代码如下:

第四步:修改AidlClientActivity.java代码如下:

第五步:运行客户端工程,效果如下:

Ok,上面就完整的作了一个Aidl开发的流程,有什么不对的地方希望大家多多指教,今天就讲到这里。谢谢!

分享到:
评论

相关推荐

    【读博笔记】读《 Android高手进阶教程(二十五)之---Android 中的AIDL!!! 》笔记对应代码

    在Android开发中,AIDL(Android Interface Definition Language)是一个强大的工具,用于实现进程间通信(IPC,Inter-Process Communication)。本笔记将深入探讨AIDL的基本概念、使用方法以及其在Android应用开发...

    老罗android开发视频教程全集百度网盘下载

    Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理,实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/...

    Android开发进阶 从小工到专家.PDF

    根据提供的文件信息,“Android开发进阶 从小工到专家.PDF”主要聚焦于Android平台上的应用程序开发技术。尽管文件描述部分未提供具体内容,但从标题和标签来看,这本书应该是旨在帮助读者从初学者成长为精通Android...

    Android AIDL示例代码.zip

    这个“Android AIDL示例代码.zip”压缩包中包含了丰富的示例和解释,旨在帮助开发者更好地理解和运用AIDL。 AIDL的基本概念: 1. **接口定义**:AIDL用于定义接口,这些接口描述了服务提供的方法。接口定义文件以`....

    《Android研发工程师高级进阶》

    《Android研发工程师高级进阶》是一本专门为有志于深入Android开发领域的工程师量身打造的专业书籍。这本书旨在帮助读者从初级阶段跨越到高级阶段,掌握更深层次的Android技术和实践。通过对这本书的学习,开发者...

    android开发资料大全

    Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程 Android应用开发者指南:性能优化 android开发教程合集(推荐新手看下这一季教程) 新手入门 会员贡献电子图书整理(内含PDF下载) ...

    aidl实现跨进程通信Demo(进阶版)

    下面将详细解释AIDL、Binder以及它们在Android中的作用。 AIDL(Android Interface Definition Language)是一种接口定义语言,它的主要目的是为了解决Android系统中进程间的通信问题。通过AIDL,开发者可以定义...

    高焕堂进阶android.rar

    《高焕堂进阶Android——深入理解Android内部机制》 Android作为全球最广泛使用的移动操作系统,其内部实现机制一直是开发者关注的重点。高焕堂先生的这本教程,旨在帮助开发者从基础到高级,全面理解Android的框架...

    android一步一步最基础学习__android新手

    根据给定的文件信息,以下是从标题、描述、标签及部分内容中提炼出的关于Android基础知识的关键知识点: ### Android基础知识概览 #### Android简介 - **基础定义**:Android是一款基于Linux内核的操作系统,专为...

    android-sdk-windows.rar

    2. **Build Tools**: 提供编译应用程序所需的工具,如aidl(Android Interface Definition Language)用于生成Java绑定代码,dx用于将类转换为Dalvik格式,aapt(Android Asset Packaging Tool)处理资源文件。...

    android应用开发揭秘pdf全+源码

    10. **Android组件间通信**:Intent是组件间通信的主要方式,除此之外还有AIDL(Android接口定义语言)用于进程间通信。 11. **异步编程**:Retrofit、Volley、OkHttp等库简化了网络请求,RxJava和LiveData则提供了...

    Android疯狂讲义11-19 源代码

    - AIDL(Android Interface Definition Language)用于跨进程通信。 - 调试技巧,如Logcat的使用,断点调试等。 这些章节的知识点覆盖了Android开发的多个核心领域,通过实践这些源代码,开发者可以提升对Android...

    Android移动应用开发(项目实战教程)

    本项目实战教程将深入讲解如何利用Android Studio进行应用开发,从基础到进阶,旨在帮助初学者快速掌握Android开发的核心技能。 1. **Android Studio入门**: - 安装与配置:首先,我们需要下载并安装Android ...

    android service 学习(下)

    ### Android Service 学习(下): 进程间通信与...总之,理解和掌握 AIDL 的使用是每一个 Android 开发者进阶的重要一步。它不仅是构建复杂应用架构的关键技术之一,也是深化对 Android 框架内部工作原理认识的绝佳途径。

    android--service实例

    本教程的“android-tutorial”可能包含了一系列关于Android Service的实例代码和详细解释,涵盖从基础到进阶的各种应用场景,对于理解和掌握Service的使用非常有帮助。通过学习和实践这些示例,开发者能够更好地应对...

    《宅男的android开发指南》(翻译)--1

    《宅男的Android开发指南》是一部面向初学者和进阶开发者的技术书籍,旨在帮助读者深入理解Android应用开发的各个环节。该书的翻译版本为“翻译-1.doc”,提供了丰富的中文解读,使得国内开发者能更好地理解和应用书...

    Android高手过招 FAQ (2).zip

    以上知识点只是Android开发中的冰山一角,"Android高手过招 FAQ .doc"文档可能会更深入地讨论这些问题的解决方案和实践经验,对于进阶开发者来说是一份宝贵的参考资料。通过深入学习和实践,开发者可以不断提升自己...

    疯狂android讲义第3版---光盘代码

    《疯狂Android讲义》是Android开发领域的一本经典教材,其第三版的光盘代码包含了大量的实例和练习,旨在帮助读者深入理解Android应用开发的核心概念和技术。这些代码分为两个部分,分别对应书中的前10章和11到19章...

    Android 知识库,涵盖初级-中级-高级,常见的面试题、知识盲区、使用技巧等等.zip

    下面,我们将围绕Android的基础知识、进阶概念以及面试常考知识点进行详述。 1. **Android基础知识** - **Activity生命周期**:Activity是Android应用的基本组件,理解其启动、暂停、恢复、销毁等状态的转换至关...

Global site tag (gtag.js) - Google Analytics