场景:在活动A的基础上开启了活动B,活动A就进入了停止状态,这个时候由于系统内存不足,将活动A回收了,然后用户按下返回键,此时还是会正常显示活动A,只不过这时候并不会执行onRestart方法,而是执行A活动的onCreate方法。假如A活动之前的文本框有数据,由于执行了onCreate方法后重新创建了一次活动A,使得之前活动A上的数据消失了。
解决方法:onSaveInstanceState方法会携带一个Bundle类型的参数,用于保存数据。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("day_key", "Something you just typed");
}
一般情况下savedInstanceState为null,但是当活动给系统回收之前通过savedInstanceState()方法来保存数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState!=null){
String tempData = savedInstanceState.getString("data_key");
Log.d(Tag,tempDate);
}
}