0
我需要說明我如何保存有另一個對象的引用的對象的狀態?使用Serializable在onSaveInstanceState中保存對象引用?
可以說我有我需要保存和恢復下面的類對象:
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還保存每個對象在mObjec TBLIST?
- 由於mObjectB具有對其父ObjectA的引用,是否將針對每個ObjectB重新實例化ObjectA?然後又會重新實例化ObjectB,然後它將重新實例化ObjectA等等,從而導致無限循環?
- 你會如何解決這個問題?
我不是當一個對象被保存爲一個序列化會發生什麼明顯的,所以請幫助我瞭解如何Android的區別時,實例化一個新的對象,什麼時候會重現實際參考。