public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt("x", x);
}
当我保存一个 Bundle 时,Bundle 变量究竟保存在哪里?我在任何地方都找不到
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt("x", x);
}
当我保存一个 Bundle 时,Bundle 变量究竟保存在哪里?我在任何地方都找不到
好吧,我认为您不会找到它,我也不希望在某处直接引用它。
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)
除了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
. 当Activity被销毁时,Application可以帮助保存相关状态。但是,如果你遇到过这种应用程序被杀死的情况,你会发现所有的状态都丢失了。所以,我认为所有状态都保存在内存中,而不是像偏好一样的文件。
我不确定我认为你必须设置 int、string 或任何你想要的东西才能将它保存到 int 让我给你看一个 例子
public void onSaveInstanceState(Bundle state){
super.onSaveInstanceState(state);
Int i = 1;
state.putInt("s",i);
}