Android - 当对象不可序列化或可分区时,将对象传递给活动

时间:2014-04-19 19:09:34

标签: android object android-activity

我想将一个对象传递给另一个活动。我的对象不是可分区的或可序列化的,因为它包含的属性本身是不可分区或可序列化的对象。并且这些属性的属性不可分区或可序列化。并且这些属性的这些属性的属性等......不是可分区的或可序列化的。

我没有权限修改这些属性的子对象的代码。因此,我没有权限让它们实现可序列化或可分割。

我可以考虑将一个对象传递给另一个活动的其他选项是什么?

3 个答案:

答案 0 :(得分:1)

传递Activity一个可用于从单个类(如扩展的Application类)中检索对象的键字符串。在配置更改(例如,旋转)之后,Activity将再次从那里检索对象。不要忘记确保Activity能够优雅地处理返回对象的情况为null,如果应用程序在所有数据被杀死后恢复的话。

答案 1 :(得分:0)

虽然这是一个丑陋的解决方案,但您可以将它们序列化为JSON。如果您可以公开访问这些对象。使用例如Gson做了这样的事情,然后传递一个JSON字符串作为Intent extra。另一种解决方案是将它们保存在Application对象中。 (甚至更难看)

如果无法序列​​化对象(例如,持有持久TCP连接的对象),则需要将其存储在某些单例对象或任何其他可从Application透视图中引用的对象中。

答案 2 :(得分:0)

除了Trevors的回答,我想提供更多细节。

有两种推荐方法可以做到这一点。请查看此question进行详细讨论。

  • 使用Singelton类在切换活动时保存数据。从呼叫者写入您的数据并由被呼叫者从中读取。

  • 扩展Application类,它是保存应用程序全局状态的基类。

一般的想法是将数据保存到一个地方,该地点独立于活动生命周期,可以全局访问。

以下是blog post如何使用这些方法。