所以最近的android dev在这里转换。为onSaveInstanceState()自动保存了什么?而什么不是?
我在网上教程中看到人们提到我们需要使用onSaveInstanceState()
他们没有提到的是我们应该使用它的时间。
显然TextView
对象的内部文本(或按钮的内部文本)不需要保存。
需要保存什么? EditText
内容会自动保存吗?
我们应该保存哪些类型的数据/我们应该不
所以最近的android dev在这里转换。为onSaveInstanceState()自动保存了什么?而什么不是?
我在网上教程中看到人们提到我们需要使用onSaveInstanceState()
他们没有提到的是我们应该使用它的时间。
显然TextView
对象的内部文本(或按钮的内部文本)不需要保存。
需要保存什么? EditText
内容会自动保存吗?
我们应该保存哪些类型的数据/我们应该不
保存您的活动状态 当你的活动开始,停止,系统调用的onSaveInstanceState()方法,因此您的活动可以保存状态信息进行收集的键值对。此方法的默认实现可以保存有关活动视图层次结构状态的瞬态信息,例如EditText小部件中的文本或ListView小部件的滚动位置。你的应用应该在onPause()方法之后和onStop()之前实现onSaveInstanceState()回调。不要在onPause()中实现此回调。
警告:您必须始终调用onSaveInstanceState()的超类实现,以便默认实现可以保存视图层次结构的状态。
要保存活动的其他状态信息,必须重写onSaveInstanceState()并将键值对添加到在您的活动意外销毁的事件中保存的Bundle对象。例如:
static final String STATE_SCORE = "playerScore";
static final String STATE_LEVEL = "playerLevel";
...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
更多细节,你可以找到here
感谢您详细的答复。但是你错过了我所认为的“活动状态”的观点。更好的问题是 - 什么是非活动状态?所以我知道不需要保存这些 – AlanSTACK