我的 Activity 启动一个 IntentService,然后调用远程 API。然后,我需要将结果数据传回 Activity(通过 BroadcastReceiver)。在应用程序的大部分其余部分中,这些数据被封装在一个类中,原始成员变量保存数据。但是当结果通过 Intent 传递时,我的选择受到限制,因为我无法跨边界传递标准 Java 对象。我正在寻找一种简洁的方法来通过 Intent 传递这样的对象,而无需编写大量重复代码。
选项:
- 在我的类(class)上实现 Parcelable。实现/维护繁琐
- 单独传递每个成员变量,并在另一端重建对象。实现/维护繁琐
- 使用 AIDL 指定契约(Contract)。以前从未做过,不确定这是否合适。
- 序列化对象并将字符串传递给 Activity 。通过 Intent 是否有字符串长度限制?我发现可能存在性能问题。
我应该使用哪种方法,为什么?
最佳答案
此远程 API 是否以某种方式(JSON 或 XML)序列化数据?您能否在反序列化到达 Activity 之前将其推迟?
如果做不到这一点,我会将序列化视为最佳选择。 Parcelable 是一种特定类型的序列化,正如您所指出的那样,实现起来有点棘手,但如果您关心性能,它应该更高效。不过,除非您要处理大量流量,否则根据我的经验,序列化选项应该不会太慢。
关于android - 如何从 IntentService 返回一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7179518/