1

我的活动启动一个IntentService,然后调用一个远程API。然后我需要将结果数据传回Activity(通过BroadcastReceiver)。在应用程序的其余大部分内部,这些数据都封装在一个类中,原始成员变量保存着数据。但是当结果通过Intent传递时,我的选择受到限制,因为我无法跨越边界传递标准Java对象。我正在寻找一种简洁而整洁的方式来通过Intent传递像这样的对象,而不需要编写大量的重复代码。如何从IntentService返回对象?

选项:

  1. 我的类实现Parcelable。单调地执行/维护
  2. 单独传递每个成员变量,并在另一侧重建对象。单调乏味地实施/维护
  3. 使用AIDL指定合同。从来没有做过,不知道这是多么恰当。
  4. 序列化对象并将字符串传递给Activity。通过一个意图是否存在字符串长度限制?我收集可能有性能问题。

我应该使用哪种方法,为什么?

+0

你是否将许多同一类的对象传递给活动?你想缓存这些数据吗? – manno23

+0

它通常是一个对象,并且数据通常不会被缓存。 –

回答

2

此远程API以某种方式(JSON或XML)序列化数据吗?你能否在反序列化之前阻止它直到达到活动?

失败,我会看到序列化作为最佳选择。 Parcelable是一种特定类型的序列化,正如你指出的那样,对于实现有点棘手,但如果你关心性能,应该更高效。但是,除非您处理大量的流量,否则序列化选项不应该太慢。

+0

好的建议,但我有相当数量的现有代码,我需要做一个相当广泛的重构和重组来做到这一点,所以我希望有更好的方式 –

+0

公平不够,答案更新。 –