为什么AsyncTask不能实现doInBackground以外的方法?

Why AsyncTask can't implement methods except doInBackground?

在 Android Studio 中,我尝试实现 AsyncTaskmethods 接口,但它只显示方法 doInBackgound()。我试图将光标放在 AsyncTask 上,然后按 Alt+Enter,但它只提供方法 doInBackgound()

import android.os.AsyncTask;
import java.net.URL;
public class MyTask extends AsyncTask<URL, Integer, Long> {
    @Override
    protected Long doInBackground(URL... urls) {
        return null;
    }
}

尝试按 Ctrl + O 来覆盖方法。查看是否可以从那里实施 OnPostExecute()。

重要: OnPostExecute() 需要来自 doInBackground() 的参数 return。如果未提供参数且方法签名不匹配,则重写注释可能无法识别该方法。

您只看到 AsyncTask::doInBackground(URL...) 的原因是因为该方法未在 抽象 class AsyncTask 中实现。

但是,其他的有默认实现,因此您只能覆盖它们。如果您需要 IntelliJAndroid Studio 来建议其他人,您需要执行 CTRL + O。这将建议您可以从父 classes.

覆盖的其他方法
    public class MyTask extends AsyncTask<URL, Integer, Long> {
    @Override
    protected Long doInBackground(URL... urls) {
        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Long aLong) {
        super.onPostExecute(aLong);
    }
    }