@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
((CustomApplication) getApplication()).detach(this);
}
在生成PMD报告时,我得到了错误:应该在方法结束时调用超级。通常,您最终会将super方法保留在顶部(First Statement),以便首先将其父类调用为initialized。
答案 0 :(得分:4)
通常你最终会将超级方法保持在最顶层(首先 声明)以便首先调用其父类初始化。
以下代码段显示Activity#onSaveInstanceState(Bundle outState)
的外观。您可以看到它只通过调用super.onSaveInstanceState(outState);
来保存您作为参数传入的Bundle。因此,在实际保存Bundle内部之前调用super方法是没有意义的。
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);
}
答案 1 :(得分:0)
根据这个SO,只要密钥没有碰撞,你在哪里调用它并不重要。它们应该是等价的。
只要您的密钥没有冲突(例如,ID与Android内部使用的ID相同),两者就完全相同。
但话虽如此,谷歌关于The Activity's Lifecycle的文档显示最后添加此内容。我仍然会遵循这一点:
// 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);
}