是否可以在AIDL中进行通用工作

时间:2013-01-10 08:11:08

标签: android ipc aidl

我有以下AIDL文件

package com.mindtherobot.samples.tweetservice;

interface TweetCollectorListener {

  void handleTweetsUpdated();
}

到目前为止,我试图在AIDL中制作通用作品。它不起作用。以下代码将标记错误。

package com.mindtherobot.samples.tweetservice;

interface TweetCollectorListener<E> {

  E handleTweetsUpdated();
}

似乎泛型在AIDL中不起作用。但是,这是我的猜测,因为Android Interface Definition Language并没有谈论泛型。

只是想确认一下,它是真的通用在AIDL中不起作用吗?有没有解决方法?

1 个答案:

答案 0 :(得分:3)

来自official AIDL docs

  

列表

     

List中的所有元素必须是受支持的数据类型之一   在此列表或其他AIDL生成的接口之一或   你声明的parcelables。 List可以可选地用作a   “generic”类(例如,List)。实际的具体课程   另一方收到的始终是一个ArrayList,尽管如此   生成方法以使用List接口。映射

中的所有元素      

地图

     

必须是此列表中支持的数据类型之一或其中一个   您声明的其他AIDL生成的接口或parcelables。   通用地图(例如地图形式的地图不是   支持的。另一方收到的实际具体类是   总是一个HashMap,虽然生成的方法是使用Map   接口

因此,正如您所看到的,对使用列表的泛型只有有限的支持,甚至不支持地图,因此不支持自定义参数化类型。