public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt("x", x);
}
当我保存Bundle时,Bundle变量在哪里准确保存?我无法在任何地方找到它
答案 0 :(得分:1)
好吧,我不认为你会发现它,我不希望在某个地方直接引用它。
但重新创建活动时,其内容将在onCreate(savedInstanceState)
中提供。摘自其文档:savedInstanceState: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null
查找其内容的另一个地方是onRestoreInstanceState(savedInstanceState)
答案 1 :(得分:1)
除了android reference之外,您还可以阅读源代码以了解此处发生的事情。
protected void onSaveInstanceState(Bundle outState) {
outState.putBundle(WINDOW_HIERARCHY_TAG, mWindow.saveHierarchyState());
Parcelable p = mFragments.saveAllState();
if (p != null) {
outState.putParcelable(FRAGMENTS_TAG, p);
}
getApplication().dispatchActivitySaveInstanceState(this, outState);
}
在源代码中,很明显状态将由Application
管理。当活动被销毁时,应用程序可以帮助保存相关状态。但是,如果您遇到应用程序被杀的情况,您会发现所有状态都丢失了。所以,我认为所有的状态都保存在内存中,而不是像偏好一样。
答案 2 :(得分:0)
我不确定我认为你必须设置int,string或者你想要的任何东西 以便将其保存到int中 让我告诉你一个 示例强>
public void onSaveInstanceState(Bundle state){
super.onSaveInstanceState(state);
Int i = 1;
state.putInt("s",i);
}