android - 如何从 IntentService 返回一个对象?

标签 android broadcastreceiver android-intent android-service

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

选项:

  1. 在我的类(class)上实现 Parcelable。实现/维护繁琐
  2. 单独传递每个成员变量,并在另一端重建对象。实现/维护繁琐
  3. 使用 AIDL 指定契约(Contract)。以前从未做过,不确定这是否合适。
  4. 序列化对象并将字符串传递给 Activity 。通过 Intent 是否有字符串长度限制?我发现可能存在性能问题。

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

最佳答案

此远程 API 是否以某种方式(JSON 或 XML)序列化数据?您能否在反序列化到达 Activity 之前将其推迟?

如果做不到这一点,我会将序列化视为最佳选择。 Parcelable 是一种特定类型的序列化,正如您所指出的那样,实现起来有点棘手,但如果您关心性能,它应该更高效。不过,除非您要处理大量流量,否则根据我的经验,序列化选项应该不会太慢。

关于android - 如何从 IntentService 返回一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7179518/

相关文章:

android - RequestLocationUpdates参数android

android - 如何触发fragment的onCreate方法?

android - 长按电源按钮发送广播

android - 不允许后台执行。 Android O 待定 Intent

android - 在后台服务中使用 TYPE_STEP_COUNTER?

android - 我可以在没有电话服务的手机上测试 Android 应用程序吗

android - 在android中快速获取当前位置一次

java - 通过自定义 Activity 挂断和拒绝来电[按钮] Android

java - 返回 Activity 的 fragment

java - 将值从 fragment 传递到另一个错误