package com.lin1987www.app; import android.os.Bundle; /** * Created by lin on 2014/9/1. * StateManager is helping Bundle data to save. */ public class ParcelableManager { private static ParcelableManager defaultParcelableManager; private Bundle data = new Bundle(); public static ParcelableManager getDefaultParcelableManager() { if (defaultParcelableManager == null) { synchronized (ParcelableManager.class) { if (defaultParcelableManager == null) { defaultParcelableManager = new ParcelableManager(); } } } return defaultParcelableManager; } public void onCreate(Bundle savedInstanceState) { if (savedInstanceState == null) { return; } data = savedInstanceState.getParcelable(this.getClass().getName()); for (String className : data.keySet()) { ParcelableKeeper parcelableKeeper = (ParcelableKeeper) data.get(className); parcelableKeeper.onRestoreInstanceState(); } } public void onSaveInstanceState(Bundle outState) { for (String className : data.keySet()) { ParcelableKeeper parcelableKeeper = (ParcelableKeeper) data.get(className); parcelableKeeper.onSaveInstanceState(); } outState.putParcelable(this.getClass().getName(), data); } public void add(ParcelableKeeper parcelableKeeper) { data.putParcelable(parcelableKeeper.getClass().getName(), parcelableKeeper); } }