super.onSaveInstanceState()在重写的onSaveInstanceState()中做了什么

时间:2014-02-06 09:23:32

标签: java android android-activity

我是Android开发的新手。 我使用覆盖版onSaveInstanceState()来保存自己的应用数据。 我注意到我没有在我的函数中调用super.onSaveInstanceState(savedInstanceState),代码运行正常。

@Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        // TODO:
        // Save state information with a collection of key-value pairs
        // 4 lines of code, one for every count variable
        savedInstanceState.putInt(CREATE_KEY, mCreate);
        savedInstanceState.putInt(RESUME_KEY, mResume);
        savedInstanceState.putInt(RESTART_KEY, mRestart);
        savedInstanceState.putInt(START_KEY, mStart);
    }

我想知道是否隐式调用super.onSaveInstanceState(savedInstanceState)

此外,在重写函数内调用super.onSaveInstanceState(savedInstanceState)的目的是什么。

2 个答案:

答案 0 :(得分:7)

当您致电super.onSaveInstanceState()时,您的所有View的状态都会被保存。

如果您没有调用super方法,您的代码仍然有效......直到......

...直到你的应用程序被放到后台,因为用户按下HOME或运行另一个应用程序(通过通知或其他)然后Android杀死你的应用程序的过程,因为它已经在后台工作了一段时间(或者它需要资源,或者它只是想让你的开发人员生活变得困难。)

然后,当用户返回您的应用程序时(通过再次启动它或从最近任务列表中选择它),Android将很乐意为您的应用程序创建一个新进程并再次启动您的Activity并将其传递给已保存的实例捆绑(现在没有保存所有View的状态,因为您忘记拨打super )并且您的活动不会向用户显示与他最后离开时的状态相同。它将以初始化(默认,空,开始)状态显示给用户。

这就是为什么在覆盖这些方法时总是需要致电super.onSaveInstanceState()super.onRestoreInstanceState()

答案 1 :(得分:-2)

如果在重写方法中调用super.onSaveInstanceState(savedInstanceState),它只是从Activity类调用方法onSaveInstanceState(savedInstanceState)。因此,将从Activity类的方法执行代码。