自定义类通过AIDL从服务传递到UI线程

时间:2010-05-30 20:50:54

标签: java android ipc

我有一项服务定期向网络服务器查询新邮件。该服务将新消息存储在arrayList中。这些消息使用自定义类实现,存储各种元数据(字符串和长整数)。

然后,活动将连接到此服务以检索这些消息并将其显示给用户。

我有一个.aidl文件,用于描述服务公开的接口。

package com.example.package;

interface MyInterface {

    List<Message> getMessages();
}

Message类扩展了应该允许IPC传输的Parcelable类。

问题是:Eclipse给出了一个错误,指出List<Message>的类型未知。任何导入都标记为无效。

想法?感谢

3 个答案:

答案 0 :(得分:1)

  

我有一个描述的.aidl文件   服务的接口   暴露。

为什么呢?您只需要远程服务,如果要向第三方应用程序公开API,则只需要远程服务。

如果您的服务是本地服务,请删除AIDL并使用本地绑定模式。

如果您确实需要AIDL,那么您应该能够在AIDL文件中显式导入Parcelable类,以便可以引用它。上面显示的AIDL接口没有这个import语句 - 虽然普通Java可能不需要它,但是AIDL需要它,因为AIDL不会自动导入类。

答案 1 :(得分:0)

我认为Message是你的类而不是android.os.Message。如果它是一个自定义类,那么可能是想要检索此类的活动现在不是类Message的问题。确保此活动在类路径中具有此类。

答案 2 :(得分:0)

您需要在同一个包中为Message类创建一个aidl文件,如下所示:

package mypackage;

parcelable MyClass;

然后您可以在服务援助中使用导入。