我想将一个对象传递给另一个活动。我的对象不是可分区的或可序列化的,因为它包含的属性本身是不可分区或可序列化的对象。并且这些属性的属性不可分区或可序列化。并且这些属性的这些属性的属性等......不是可分区的或可序列化的。
我没有权限修改这些属性的子对象的代码。因此,我没有权限让它们实现可序列化或可分割。
我可以考虑将一个对象传递给另一个活动的其他选项是什么?
答案 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如何使用这些方法。