首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在方法的末尾应该调用Super

在方法的末尾应该调用Super
EN

Stack Overflow用户
提问于 2013-08-01 11:03:31
回答 2查看 720关注 0票数 1
代码语言:javascript
运行
复制
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    ((CustomApplication) getApplication()).detach(this);    
}

在生成PMD报告时,我得到了这个错误:在方法的末尾应该调用超级。通常,您最终会将超级方法保留在顶部(第一个语句),以便它的父类首先被称为初始化。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-01 11:27:36

通常,您最终会将超级方法保留在顶部(第一个语句),以便它的父类首先被称为初始化。

下面的代码片段向您展示了Activity#onSaveInstanceState(Bundle outState)的样子。您可以看到,它只通过调用super.onSaveInstanceState(outState);保存作为参数传入的绑定。因此,在实际保存包内的东西之前,调用超级方法是没有意义的。

代码语言:javascript
运行
复制
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);
}
票数 4
EN

Stack Overflow用户

发布于 2017-06-09 16:02:36

根据这个所以,只要密钥不碰撞,在什么地方叫它并不重要。他们应该是等价物。

只要您的键不发生冲突(例如,ID与Android内部使用的ID相同),两者是相同的。

但话虽如此,谷歌关于活动的生命周期的文档显示,这是在最后添加的。不过,我仍然会这样做:

代码语言:javascript
运行
复制
// invoked when the activity may be temporarily destroyed, save the instance state here
@Override
public void onSaveInstanceState(Bundle outState) {
    out.putString(GAME_STATE_KEY, mGameState);
    out.putString(TEXT_VIEW_KEY, mTextView.getText());

    // call superclass to save any view hierarchy
    super.onSaveInstanceState(out);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17992284

复制
相关文章

相似问题

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