2017-05-08 96 views
0

所以最近的android dev在这里转换。为onSaveInstanceState()自动保存了什么?而什么不是?

我在网上教程中看到人们提到我们需要使用onSaveInstanceState()他们没有提到的是我们应该使用它的时间。

显然TextView对象的内部文本(或按钮的内部文本)不需要保存。

需要保存什么? EditText内容会自动保存吗?

我们应该保存哪些类型的数据/我们应该不

回答

1

保存您的活动状态 当你的活动开始,停止,系统调用的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

+0

感谢您详细的答复。但是你错过了我所认为的“活动状态”的观点。更好的问题是 - 什么是非活动状态?所以我知道不需要保存这些 – AlanSTACK