何时应调用super.onResume();
,在onResume()
的第一行还是最后一行?什么时候应该调用super.onResume()?
protected void onResume() {
Log.i(MY_DEBUG_TAG, "On Resume");
super.onResume();
displayDashboard();
}
何时应调用super.onResume();
,在onResume()
的第一行还是最后一行?什么时候应该调用super.onResume()?
protected void onResume() {
Log.i(MY_DEBUG_TAG, "On Resume");
super.onResume();
displayDashboard();
}
无论您选择调用超级方法取决于是否需要继承的功能。您可以经常发现是否需要从Api文档调用超级方法。
有时你需要在super方法被调用之前做一些事情(即过滤一个属性或执行一个动作)。有时你的代码必须在超级方法执行后发生。
这是非常多的实现特定。
Android的源代码可以告诉我们一切。之前或之后它被称为
protected void onResume() {
if (DEBUG_LIFECYCLE) Slog.v(TAG, "onResume " + this);
getApplication().dispatchActivityResumed(this);
mCalled = true;
}
在此基础上,无论是:如果检查活动的超类,你可以找到以下行。
文档中显示“注意:在执行任何工作之前,您的这些生命周期方法的实现必须始终调用超类实现,如上面的示例所示。”从你的答案我知道你有时需要打破这个规则? –
当文档明确说明时应始终调用超级方法。但是,您通常可以选择在超级通话前后执行的操作。覆盖基本方法时,应始终了解该方法的工作方式。无论你选择调用超级方法取决于a)如果你必须(即文档说)或b)你想要的基本功能。评论中的引用表示特定情况需要在任何自定义处理之前调用超级方法@arne –
它只是说“永远”。我没有在文档中找到任何特定的先决条件。 –