aidl java_带有Java泛型的Android AIDL

本文介绍了如何在Android的AIDL(Android Interface Definition Language)中处理带有Java泛型的Result类。通过创建实现了Parcelable接口的Result和Animal类,允许在服务和客户端之间传递泛型数据。在Result类中,存储了泛型类型的类对象,以便在读取时能够正确地反序列化。此外,还提供了服务和客户端代码片段,展示了如何在实际应用中使用这些泛型结果。
摘要由CSDN通过智能技术生成

据我所知,AIDL编译器不喜欢Result< Animal> getResult();.但是,结果为getResult();.确实有效.这就是我所做的:

>创建具有签名公共类Result< Textended Parcelable>的类.实现Parcelable.

>创建了一个新类以放入第一个类,即动物.签名是公共类Animal实施Parcelable.

>必须在Result和Animal中实现接口Parcelable和CREATOR所需的方法,并且还根据需要为每个类创建一个AIDL,并将这两个类都导入到主AIDL中.这些东西是AIDL的常规工作,在AIDL site中有描述.

>在结果内部,我们不仅存储类型T的对象,还存储类的对象.编写包裹时,我们需要首先编写类类型,然后才编写通用对象.阅读时,我们以相同的顺序进行.我们需要编写类类型,因为在读取时,我们必须在int.readValue(classType.getClassLoader())中做t =(T);并且没有类类型,我们do not know提取哪个类加载器.可能还有其他方法可以做到这一点,但这就是我在此示例中所做的.

>在客户端节点上接收时,我可以成功执行Result< Animal> r = MainActivity.this.service.getResult();然后在Result和Animal上调用方法.

可以在下面找到一些可以使事情变得更清晰的代码.

public class Result implements Parcelable {

private String msg;

private Class classType;

private T value;

public Result(String msg, T value, Class classType) {

this.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值