AIDL实例分析和讲解

本文介绍了AIDL在Android中的作用,通过实例展示了如何使用AIDL进行进程间通信,包括服务端方法调用和数据传输的过程。
摘要由CSDN通过智能技术生成
前言
为使应用程序之间能够彼此通信,Android提供了IPC (Inter Process Communication,进程间通信)的一种独特实现: AIDL (Android Interface Definition Language, Android接口定义语言)。
这篇文章将通过一个项目来介绍AIDL用法,包含了service和client。可能简单了些,不过轻省许多。

这篇博文包含以下三个部分:
1、AIDL介绍
2、定义
3、用例: HelloSumAIDL
    3.1、创建工程
    3.2、定义AIDL文件
    3.3、实现远程服务(Service)
    3.4、“暴露”服务
    3.5、相关代码

在开始介绍之前 我想讲一下AIDL的大体运行模式
第一步:定义AIDL文件 在文件中有你要实现和后面要使用到的方法;
第二步:在Service中实现AIDL中定义的方法,该实现通过在onBind中返回一个Stud的类中实现;
第三步:通过ServiceConnection方法来将在客户端的service初始化,使客户端的service也具有你定义在AIDL中方法的使用能力;

第四步:你可以使用service进行方法调用,传输数据等。

一、 AIDL介绍

在Android中,每个应用(Application)执行在它自己的进程中,无法直接调用到其他应用的资源,这也符合“沙箱”的理念。所谓沙箱原理,一般来说用在移动电话业务中,简单地说旨在部分地或全部地隔离应用程序。关于沙箱技术我们这里就不多做介绍了,可以参看51CTO的这篇文章
因此,在Android中,当一个应用被执行时,一些操作是被限制的,比如访问内存,访问传感器,等等。这样做可以最大化地保护系统,免得应用程序“为所欲为”。
那我们有时需要在应用间交互,怎么办呢?于是,Android需要实现IPC协议。然而,这个协议还是有点复杂,主要因为需要实现数据管理系统(在进程或线程间传递数据)。为了暂时减缓这个“会呼吸的痛”,Android为我们实现了自己的IPC,也就是梁静茹,oh,sorry,是AIDL :] 

二、 定义
AIDL是IPC的一个轻量级实现,用了对于Java开发者来说很熟悉的语法。Android也提供了一个工具,可以自动创建Stub(类构架,类骨架)。当我们需要在应用间通信时,我们需要按以下几步走:
1. 定义一个AIDL接口
2. 为远程服务(Service)实现对应Stub
3. 将服务“暴露”给客户程序使用

三、 用例: HelloSumAIDL
AIDL的语法很类似Java的接口(Interface),只需要定义方法的签名。
AIDL支持的数据类型与Java接口支持的数据类型有些不同
1. 所有基础类型(int, char, 等)
2. String,List,Map,CharSequence等类
3. 其他AIDL接口类型
4. 所有Parcelable的类

为了更好地展示AIDL的用法,我们来看一个很简单的例子: 两数相加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值