活动中保存的Bundle变量在哪里?

时间:2013-09-24 09:35:01

标签: android

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

当我保存Bundle时,Bundle变量在哪里准确保存?我无法在任何地方找到它

3 个答案:

答案 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);


}