super() 之前和之后的代码之间的差异

2022-08-31 22:26:35

查看下面的示例代码

@Override
protected void onPause() {
    ...some code here...
    super.onPause();
}

@Override
protected void onPause() {
    super.onPause();
    ...some code here...
}

当我询问代码的差异时,我并不是说执行流程,这是无稽之谈。

那么这些代码之间的真正区别是什么呢?建议何时在调用使用代码,何时在调用使用代码?我想有些情况下这确实很重要。super()super()


答案 1

不应将任何代码放在 之前,因为此方法允许系统执行它需要执行的操作以正确暂停应用程序。要在回调中执行的任何代码都应放在调用 之后。希望这有帮助。super.onPause()onPause()super.onPause()

活动引言:

注意:在执行任何工作之前,这些生命周期方法的实现必须始终调用超类实现,如上面的示例所示。


答案 2

必须使用此链接切入具有相同主题的线程:

super.onResume() 在方法的开始或结束?这重要吗?

请注意黛安·哈克伯恩(Dianne Hackborn)的引用

是的,这是一个很好的模式。在大多数情况下,这可能并不重要,但这是一个一般规则:在任何类型的初始化期间,让超类首先完成他们的工作;在任何类型的最终确定过程中,您首先完成工作。