Unchecked Call to 'execute (Params...)' как член raw type 'android.os.AsyncTask'

Я следую руководству google android по Udacity, но в указанном коде я получаю следующее предупреждение:

Непроверенный вызов "выполнить (Params...)" в качестве члена необработанного типа "android.os.AsyncTask"

в этом коде:

DoSomethingTask myTask = new DoSomethingTask();
myTask.execute(); // Warning here

DoSomethingTask:

public class DoSomethingTask extends AsyncTask {

    protected Object doInBackground(Object[] params) {
        ...
    }
}

Может ли кто-нибудь объяснить это предупреждение и как его исправить? Кажется, он должен работать в соответствии с инструкциями...

Ответы

Ответ 1

Предупреждение вызвано параметрами задачи. Попробуйте использовать:

extends AsyncTask<Void, Void, Void>{
    protected Object doInBackground() {
    }
}

или используйте:

extends AsyncTask<Object, Void, Void>{
    protected Object doInBackground(Object[] params) {
    }
}
myTask.execute(anyObject);

Пояснение:

В этом документе объясняется значение трех типов для AsyncTask.

  • Парамс, тип параметров, отправленных в задачу при выполнении.

  • Прогресс, тип единиц прогресса, опубликованных во время фонового вычисления.

  • Результат, тип результата фонового вычисления.

Ответ 2

изменить

AsyncTask asyncTask = new AsyncTask<Object, Void, String>() {

        @Override
        protected String doInBackground(Object... params) {
            return "";
        }
    };

    asyncTask.execute();

to

AsyncTask<Object, Void, String> asyncTask = new AsyncTask<Object, Void, String>() {

        @Override
        protected String doInBackground(Object... params) {
            return "";
        }
    };

    asyncTask.execute();

Ссылка AsyncTask нужна так же, как класс AsyncTask, а среда IDE не будет предупреждать.