我应该将超级调用放在Android事件处理程序中的什么位置?

问题描述

| 在阅读“ Hello,Android”时,我注意到一个问题。 当他在Activity中实现onCreate()时,它看起来像: { super.onCreate(..); ... ... } 但是onSizeChanged()看起来像: { ... ... super.onSizeChange(); } 而且他不会在onDraw()中调用super。 我应该在哪里放置超级通话说明?在Android的文档中哪里可以找到答案?     

解决方法

在子类中任何覆盖的方法中,super.methodname()的位置通常是该方法中的第一件事,例如
onCreate()
。但是,有时您需要在调用super之前执行其他步骤,因此您可以像
onSizeChanged()
方法中那样进行操作。超级调用是根据此条件而不是其他任何规则确定的。     ,在很多情况下,当您考虑在宏的事物方案中覆盖的功能出现在什么地方时,这个问题的有用答案就会出现。 如果您要调用的东西起初始化器的作用,那么
super
调用应该(通常)在开头,因为您希望在尝试初始化子类之前先初始化基类。 如果您要调用的行为类似于清理例程,则通常应在末尾进行
super
调用,因为您想在超类清理自身之前清理所有片段。 对于在任意时间出现的呼叫,这将取决于您覆盖的呼叫的性质。如果您想在框架进行计算之前先做一些事情,以便可以影响它们的结果,则需要在最后调用
super
。如果要基于超类的计算进行计算,则
super
调用应从头开始。 简而言之,没有固定的规则:这取决于您要重写的特定方法的功能。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...