【发布时间】:2016-12-03 14:27:11
【问题描述】:
我需要说明如何保存引用另一个对象的对象的状态?
假设我有以下需要保存和恢复的类对象:
public class ObjectA implements Serializable{
private List<ObjectB> mObjectBList;
}
public clas ObjectB implements Serializable {
// some other members here
private ObjectA mParent;
}
以下是在片段中调用保存和恢复的代码:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("ObjectA", mObjectA);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
mObjectA = (mObjectA) savedInstanceState.getSerializable("ObjectA");
}
}
问题:
- 保存 mObjectA 是否也会保存 mObjectBList 中的每个对象?
- 由于 mObjectB 有对其父 ObjectA 的引用,是否会为每个 ObjectB 重新实例化 ObjectA?然后哪个又会重新实例化 ObjectB,然后它会重新实例化 ObjectA,以此类推,导致无限循环?
- 您将如何解决这个问题?
我不清楚将对象保存为可序列化时会发生什么,因此请帮助我了解 Android 如何区分何时实例化新对象以及何时重现实际引用。
【问题讨论】:
标签: android serializable