1、onCreate()方法中最后判断需要保存的状态值
if(savedInstanceState != null){ mCurrentIndex = savedInstanceState.getInt(KEY_INDEX,0); }
2、在onCreate()方法后重写onSaveInstanceState(Budle)方法
@Override public void onSaveInstanceState(Bundle savedInstanceState){ super.onSaveInstanceState(savedInstanceState); Log.i(TAG,"onSaveInstanceState"); savedInstanceState.putInt(KEY_INDEX,mCurrentIndex);
原理:所有activity的视图将自身的状态数据保存在Budle对象中,这样屏幕旋转就不会丢失反转前的数据。
需要注意的地方:
- 我们在Bundle中存储和恢复的数据类型只能是基本数据类型(primitive type)以及可以实现Serializable接口的对象。
- 创建自己的定制类时,如需onSaveInstanceState()方法中保存类对象,需要实现Serializable接口。
- activity对象只有在暂停或者停止的状态下才可能被销毁。此时会调用onSaveInstanceState()方法。
- 来源: http://blog.csdn.net/u014744118/article/details/51527272