Android AIDL 教程 (一)—— 简单的示例

本文介绍如何使用Android AIDL进行进程间通信,包括声明接口、处理请求和响应,以及服务暴露。讲解了AIDL支持的数据类型、自定义Parceable类型注意事项,以及如何在Service中实现AIDL接口。还提供了EasyService的实现,展示如何启动和与远程Service交互。
摘要由CSDN通过智能技术生成

Map 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 不支持通用 Map(如 Map<String,Integer> 形式的 Map)。 另一端实际接收的具体类始终是 HashMap,但生成的方法使用的是 Map 接口。

  • 实现 Parceable 的自定义类型

注意事项

  • 在 aidl 文件中,除了 Java 编程语言中的所有原语类型、String、CharSequence、List、Map,其他在 AIDL 文件中用到的类,你必须使用 import 语句导入,否则会报错。

  • 当你使用实现Parceable 的自定义类型的时候,当其作为参数的时候,你必须为其制定是输入或者是输出参数。

in 表示输入参数,即服务端可以修改该类型

out 表示输出参数,即客户端可以修改该类型,客户端不行

inout 表示客户端和服务端都可以修改该类型

void onSuccess(int code,in MusicInfo musicInfo);

有人可能会这样想,既然 inout 表示客户端和服务端都可以修改该类型,那我们平时在写 aidl 文件的时候,直接在方法参数前面加上 inout 修饰就 OK了,省得去区分。

这样做法当然不行,既然双方都可以修改,那系统的开销肯定会比较大。就好比管道一样。

说了这么多,接下来让我们一起来看一下例子 IEasyService.aidl

package xj.musicserver.easy;

// Declare any non-default types here with import statements

interface IEasyService {

/**

  • Demonstrates some basic types that you can use as parameters

  • and return values in AIDL.

*/

void connect(String mes);

void disConnect(String mes);

}

这个 aidl 文件很接口,只有两个方法,connect 和 disConnect 方法。

在这里插入图片描述

这里我们把 aidl 文跟 Java 文件中放在一起,需要在 build.gradle 中配置

sourceSets {

main {

jniLibs.srcDirs = [‘libs’]

aidl.srcDirs =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值