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

本文介绍了AIDL(AndroidInterfaceDefinitionLanguage)中的in,out,inout参数类型,强调了它们在服务端与客户端通信中的正确使用,并通过示例展示了如何在AndroidStudio中创建和引用AIDL文件,以及如何在Service中处理客户端请求。同时讨论了组件化、热升级和热修复等前沿技术在实际开发中的应用。
摘要由CSDN通过智能技术生成

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 = [‘src/main/java’]

}

}

关于怎样在 AndroidStudio 中引用 aidl 文件的,可以参考我的这一篇文章 AndroidStudio 引用 aidl 文件的两种方法

编写一个 Service,实现接口,处理客户端的请求,并将接口返回回去

public class EasyService extends Service {

private static final String TAG = “EasyService”;

public EasyService() {

}

IEasyService.Stub mIBinder=new IEasyService.Stub() {

@Override

public void connect(String mes) throws RemoteException {

LogUtil.i(TAG,“connect: mes =” + mes);

}

@Override

public void disConnect(String mes) throws RemoteException {

LogUtil.i(TAG, “disConnect: mes =” +mes);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值