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

时间:2019-05-25 06:36:43

标签: android android-asynctask android-async-http

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

screenshot

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

3 个答案:

答案 0 :(得分:0)

尝试对替代方法按Ctrl +O。查看是否可以从那里实现OnPostExecute()。

重要: OnPostExecute()需要一个从doInBackground()返回的参数。如果未提供参数并且方法签名不匹配,则覆盖注释可能无法识别该方法。

答案 1 :(得分:0)

之所以只看到AsyncTask::doInBackground(URL...),是因为该方法未在抽象类AsyncTask 中实现。

但是,其他的具有默认实现,因此您只能覆盖它们。如果您需要 IntelliJ Android Studio 来建议其他人,则需要执行 CTRL + O 。这将建议您可以从父类中覆盖的其他方法。

答案 2 :(得分:0)

    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);
    }
    }