Почему AsyncTask не может реализовать методы, кроме doInBackground? - PullRequest
1 голос
/ 25 мая 2019

В Android Studio я пытался реализовать методы интерфейс AsyncTask, но он показывает только метод 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 голосов
/ 25 мая 2019

Причина, по которой вы видите только AsyncTask::doInBackground(URL...), заключается в том, что метод не реализован в абстрактном классе AsyncTask.

Однако другие имеют реализации по умолчанию, поэтому вы можете только переопределить их. Если вам нужно IntelliJ или Android Studio , чтобы предложить другие, вам нужно сделать CTRL + O . Это предложит другие методы, которые вы можете переопределить из родительских классов.

0 голосов
/ 25 мая 2019
    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);
    }
    }
0 голосов
/ 25 мая 2019

Попробуйте нажать Ctrl + O для переопределения методов.Посмотрите, может ли OnPostExecute () быть реализован оттуда.

Важно : OnPostExecute () нуждается в аргументе, который возвращается из doInBackground ().Если аргумент не предоставлен и сигнатуры метода не совпадают, то переопределенная аннотация может не распознать метод.

...