未选中调用 'execute(Params...)' 作为原始类型 'android.os.AsyncTask' 的成员

2022-09-01 23:14:57

我正在关注Udacity上的Google Android教程,但在指定的代码中,我收到以下警告:

未选中调用 'execute(Params...)' 作为原始类型 'android.os.AsyncTask' 的成员

在此代码上:

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

做某事任务:

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 的三种类型的含义。

  1. 参数,执行时发送到任务的参数的类型。

  2. 进度,在后台计算期间发布的进度单位的类型。

  3. 结果,背景计算结果的类型。


答案 2

改变

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

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

    asyncTask.execute();

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

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

    asyncTask.execute();

AsyncTask 引用需要与 AsyncTask 类相同,并且 IDE 不会发出警告。


推荐