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

doo*_*ers 22 java android android-asynctask

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

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

在这段代码上:

DoSomethingTask myTask = new DoSomethingTask();
myTask.execute(); // Warning here
Run Code Online (Sandbox Code Playgroud)

DoSomethingTask:

public class DoSomethingTask extends AsyncTask {

    protected Object doInBackground(Object[] params) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能解释这个警告以及如何解决它?它似乎应该按照说明工作......

Sur*_*ely 27

警告是由任务的参数引起的.尝试使用:

extends AsyncTask<Void, Void, Void>{
    protected Object doInBackground() {
    }
}
Run Code Online (Sandbox Code Playgroud)

或使用:

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

说明:

文档解释了AsyncTask的三种类型的含义.

  1. Params,执行时发送给任务的参数类型.

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

  3. 结果,后台计算结果的类型.