用aidl传输实体类数据

本文介绍如何在Eclipse环境下,利用AIDL实现客户端应用将Person实体类数据传递给服务端应用,并获取返回的String信息。文章强调了在实际项目中创建AidlHelper库的重要性,以及在处理aidl时的一些规范和注意事项,如包名尾缀、文件命名约定和实体类转换为Parcelable。提供了参考链接和作者的源码分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现功能

在Eclipse中(没用Android Studio公司原因),用aidl传输实体类Person数据,客户端app把实体类Person通过aidl传输到服务端app,然后返回一个String,通过Toast显示出来。

参考链接

http://blog.youkuaiyun.com/liuhe688/article/details/6409708
我参考这个写的Demo。

如何在客户端app找到服务端app实现方法?

这里写图片描述
这里写图片描述

有些具体的写法呢,没有必要纠结,照猫画虎,能用就行,一开始别看太深,对初学者没啥好处。用都不会用,都没有整体感知,就看原理,完全是雾里看花。先对aidl有个整体感知吧。

AidlHelper库工程

### 使用Parcelable接口在AIDL中进行数据递 为了通过AIDL使用`Parcelable`接口,需遵循特定的规则和步骤。当涉及到非基本数据类型的数据传输时,如自定义对象,这些对象应当实现`android.os.Parcelable`接口以便能够在不同进程间高效地序列化和反序列化[^1]。 #### 定义一个可Parcel化的类 首先,在应用的一个`.aidl`文件里声明这个类为parcelable。例如: ```java // Person.aidl package com.example.myapp; parcelable Person; ``` 这告诉编译器该类实现了`Parcelable`协议并应被处理成可以在远程调用期间交换的对象。 接着,在对应的Java源码文件中具体实现`Person`类及其`writeToParcel()`方法用于打包实例状态到`Parcel`容器内;还有静态工厂方法`CREATOR`负责解包操作[^3]。 ```java public class Person implements Parcelable { private String name; private int age; protected Person(Parcel in) { name = in.readString(); age = in.readInt(); } public static final Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel in) { return new Person(in); } @Override public Person[] newArray(int size) { return new Person[size]; } }; // Getters and setters... @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } @Override public int describeContents() { return 0; } } ``` #### 创建AIDL接口以接受或返回Parcelable对象 一旦有了上述的`Person`实体,则可以通过导入此类型并在AIDL接口定义中作为参数或返回值来利用它。下面是一个例子展示怎样构建这样的接口: ```aidl // IMyAidlInterface.aidl package com.example.myapp; import com.example.myapp.Person; interface IMyAidlInterface { List<Person> addPerson(in Person person); } ``` 这里的关键在于确保所有涉及的非原始类型都已正确定义并且正确引入到了各自的AIDL文件之中。此外,对于像这里的`addPerson`函数来说,由于接收了一个输入型(`in`)的`Person`对象作为参数,因此需要显式地标记其方向属性。 #### 实现服务端逻辑 最后一步是在服务器端提供具体的业务逻辑实现,即编写继承自`IMyAidlInterface.Stub`的服务类,并重写其中的方法完成实际功能开发。客户端则绑定至该服务并通过代理访问所提供的APIs。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一休日记

csdn打赏扣费20点,这

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值