Retaining an Object During a Configuration Change
If restarting your activity requires that you recover large sets of data, re-establish a network connection, or perform other intensive operations, then a full restart due to a configuration change might be a slow user experience. Also, it might not be possible for you to completely restore your activity state with the
When the Android system shuts down your activity due to a configuration change, the fragments of your activity that you have marked to retain are not destroyed. You can add such fragments to your activity to preserve stateful objects.
To retain stateful objects in a fragment during a runtime configuration change:
Extend the
Call
Add the fragment to your activity.
Use
For example, define your fragment as follows:
publicclassRetainedFragmentextendsFragment{// data object we want to retainprivateMyDataObjectdata;// this method is only called once for this fragment@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);// retain this fragmentsetRetainInstance(true);}publicvoidsetData(MyDataObjectdata){this.data=data;}publicMyDataObjectgetData(){returndata;}}
Caution: While you can store any object, you should never pass an object that is tied to the