在覆盖AsyncTask的构造函数时,我应该调用super()吗?

yyd*_*ydl 11 android overriding android-asynctask

在我见过的许多例子中,AsyncTask扩展了,构造函数被覆盖,并且没有调用super().例如,在hackbod的这个答案中:

static class Worker extends AsyncTask<URL, Integer, Long> {
    MyActivity mActivity;

    Worker(MyActivity activity) {
        mActivity = activity;
    }

    [...]

}
Run Code Online (Sandbox Code Playgroud)

新构造函数不会回调父的构造函数.

CommonsWare 在这个示例项目中有类似的代码.

这是正确的吗?或者应该super()真的被称为?

Ste*_*ein 18

如果未显式调用super(),则会隐式调用默认的超级构造函数.所以根本没有什么区别.我会使用较短的版本(省略super()),这似乎是Java中的常见做法.

ps另请参见此线程:Java中的缺省构造函数和继承