首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >super.onSaveInstanceState()在重写的onSaveInstanceState()中做什么?

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

Stack Overflow用户
提问于 2014-02-06 09:23:32
回答 2查看 2.7K关注 0票数 3

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

代码语言:javascript
复制
@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)的目的是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-06 17:35:44

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

如果您不调用super方法,您的代码将仍然是work...until..。

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

然后,当用户返回到您的应用程序时(通过再次启动它,或者从最近的任务列表中选择它),Android将很高兴地为您的应用程序创建一个新的进程,并再次启动您的活动,并将保存的实例包传递给它(现在,由于您忘记调用** View**s,您的活动将不会显示给用户与他上次离开时相同的状态)。它将以初始化(默认、空、启动)状态显示给用户。

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

票数 9
EN

Stack Overflow用户

发布于 2014-02-06 09:26:09

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21598610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档