onSaveInstanceState()方法 是Android中的生命周期方法之一,用于保存活动(Activity)的状态信息,以便在活动被销毁和重新创建时恢复状态。这通常发生在设备旋转、配置更改或系统内存不足时。在 onSaveInstanceState()方法 中,你可以保存关键的活动数据到 Bundle对象 中( putXXX()方法 )。这个 Bundle 对象将在活动重新创建时传递给 onCreate()方法 和 onRestoreInstanceState()方法 ,以便用于恢复之前保存的状态。
onRestoreInstanceState()方法 是用于在活动重新创建时恢复之前保存的状态的生命周期方法。当活动由于配置更改(例如屏幕旋转)或其他原因而被销毁并重新创建时,系统会调用 onRestoreInstanceState()方法 ,以便你可以从之前保存的 Bundle对象 中获取状态数据并进行恢复( getXXX()方法 )。
在屏幕旋转时,onCreate()方法会被重新调用,所以会造成部分数据丢失的情况(如EditText填写的字符串),而onRestoreInstanceState()方法也会在此时调用,所以仅在其中一个方法实现数据恢复操作即可。
//例.
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//存在数据
if(savedInstanceState!=null){
//数据恢复
String data=savedInstanceState.getString("key_name_data");
//设置数据...
}
}
//重写onSaveInstanceState方法
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
//存储数据
outState.putString("key_name_data","data");
}
//重写onRestoreInstanceState方法
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//存在数据
if(savedInstanceState!=null){
//数据恢复
String data=savedInstanceState.getString("key_name_data");
//设置数据...
}
}
}