假如MainActivity如下
public class MainActivity extends Activity {
private int mCurrentIndex = 0;
private static final String KEY_INDEX = "index";
// 重新加载后,mCurrentIndex为零
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCurrentIndex += 10; // 二次加载后,为10
}
}
当屏幕翻转的时候activity将会重新开启一轮生命周期:
此时 mCurrentIndex 也会被重置,变成 0
那么为了保存这个变量,可以覆写 onSaveInstanceState 方法:
public class MainActivity extends Activity {
private int mCurrentIndex = 0;
private static final String KEY_INDEX = "index";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 从保存的变量中获取该键值对中的值。
if(savedInstanceState !=null){
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX,0);
}
mCurrentIndex += 10; //二次加载后,为20
}
// 状态保留,在开启下一个生命周期之前保留状态
@Override
protected void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// 通过使用 putInt方法 来保存这个变量,以键值对的方式存储
savedInstanceState.putInt(KEY_INDEX, mCurrentIndex);
}
}
相关内容可以了解:Android 生命周期。