1
public void onSaveInstanceState(Bundle outState) 
{
    super.onSaveInstanceState(outState);
    outState.putInt("x", x);
}

当我保存一个 Bundle 时,Bundle 变量究竟保存在哪里?我在任何地方都找不到

4

3 回答 3

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)

于 2013-09-24T09:40:20.617 回答
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. 当Activity被销毁时,Application可以帮助保存相关状态。但是,如果你遇到过这种应用程序被杀死的情况,你会发现所有的状态都丢失了。所以,我认为所有状态都保存在内存中,而不是像偏好一样的文件。

于 2013-09-24T10:01:31.027 回答
0

我不确定我认为你必须设置 int、string 或任何你想要的东西才能将它保存到 int 让我给你看一个 例子

public void onSaveInstanceState(Bundle state){
super.onSaveInstanceState(state);
Int i = 1;
state.putInt("s",i);


}
于 2013-09-24T09:43:29.320 回答