我想将对象传递给另一个活动。我的对象不可parcelable或serializeable,因为它包含的属性是本身不可parcel或序列化的对象。并且这些属性的属性不可以parcel或序列化。而这些属性的属性等等......都是不可分列或可序列化的。Android - 当对象不可序列化或可调解时将对象传递给活动
我没有授权将这些子对象的代码修改为属性。因此,我没有权限让它们实现可序列化或可分段。
我可以考虑将对象传递给其他活动的其他选项是什么?
我想将对象传递给另一个活动。我的对象不可parcelable或serializeable,因为它包含的属性是本身不可parcel或序列化的对象。并且这些属性的属性不可以parcel或序列化。而这些属性的属性等等......都是不可分列或可序列化的。Android - 当对象不可序列化或可调解时将对象传递给活动
我没有授权将这些子对象的代码修改为属性。因此,我没有权限让它们实现可序列化或可分段。
我可以考虑将对象传递给其他活动的其他选项是什么?
传递您的Activity
一个关键字符串,它可以用来从单个类中检索对象,例如扩展Application
类。 Activity
会在配置更改(例如旋转)后再次从那里检索对象。不要忘记确保Activity
妥善处理返回对象为null
的情况,在所有数据被终止后应用程序恢复的情况下。
虽然这是一个丑陋的解决方案,但可以将它们序列化为JSON。如果您有公共访问这些对象。使用例如Gson做这样的事情,然后传递一个JSON字符串作为Intent extra。另一种解决方案是将它们保存在Application对象中。 (更丑陋)
如果对象无法序列化(例如,持有持久TCP连接的对象),则需要将其存储在某个单例对象或任何其他可从Application透视图中引用的对象中。
除了Trevors的答案,我想给更多的细节。
有两种推荐的方法可以做到这一点。看看这个question的详细讨论。
在切换活动时使用Singelton类来保存数据。将数据从调用者写入它并由被调用者读取。
扩展Application类,它是保存应用程序全局状态的基类。
总的想法是将数据保存到一个独立于Activity生命周期且可以全局访问的地方。
这里是一个blog post如何使用这些方法。
保存sharedpreferences中对象的数据记忆体在另一个活动中访问它们 – sandy
您可以将它们放入数据库并通过传入主键在其他活动中获取它们吗? –