尽管从annotation
中覆盖诸如onPostExecute
之类的方法,我们可以避免或从中删除AsyncTask
。您能告诉我为什么以及何时需要使用此通话吗?
因为我在这里将AsyncTask实施为Main Activity中的内部类
super.onPostExecute(result);
答案 0 :(得分:3)
覆盖方法时,将重新定义该方法,即,如果在子类的实例(已覆盖该方法的实例)上调用此方法,则将调用该定义的新版本。
当您覆盖方法时(例如,重新定义或换句话说,将超类定义替换为该定义的子版本),您有两种选择:
请注意,如Andy Turner所指出,对call super的要求被视为反模式。
答案 1 :(得分:2)
当我们重写某些方法时,这意味着:
Now Override意味着在Parent和Child中都具有相同的方法。 Se下面的示例:
class Parent
{
public Parent()
{
"Inside Parent Constructor";
}
public void meth()
{
"Inside Parent Method";
}
}
class Child
{
public Child()
{
"Inside Child Constructor";
}
public void meth()
{
super();
"Inside Parent Method";
}
}
由于子类中的超级关键字,它将转到父级的构造函数。并打印“内部父级构造函数”。
所以主要的是,很多时候Andoid OS都想访问从其重写方法的父类,为此我们编写了super()。
答案 2 :(得分:2)
在重写方法时调用超类的方法的目的是什么?
目的是在继承当前类的类中运行该方法,以执行该类负责的工作,因为这可能是超类状态的某种设置。
对于您的特定情况,无需调用以下问题中所述的super.onPostExcecute():
Should I call super.onPostExecute(result) in Android AsyncTask?