场景复现:
在activityA中的EditText输入一些数据,然后打开activityB去选择数据,再切回activityA中发现activityA中之前输入的数据没了。
分析:
由于系统内存不足activityA被回收掉了,再次看到的activityA是新创建的,不带有任何临时数据。如果我们的应用出现了这种现像会很影响用户体验,让用户输入重复数据。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState!=null) {
String tempData = savedInstanceState.getString("tempData");
}
String className = getClass().getSimpleName();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String something="hiahia";
outState.putString("tempData", something);
}
代码很简单就是重写activity的onSaveInstanceState()方法来保存数据,这个方法会保证一定在activity被回收之前调用。