gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:38:49 31 4
gpt4 key购买 nike

我是 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) 的目的是什么。

最佳答案

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

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

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

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

这就是为什么在覆盖这些方法时总是需要调用 super.onSaveInstanceState()super.onRestoreInstanceState() 的原因。

关于java - super.onSaveInstanceState() 在重写的 onSaveInstanceState() 中做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598610/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com