从Google's Android Documentation看,我们看到了
Params ,执行时发送给任务的参数类型。
进度,后台计算期间发布的进度单位的类型。
结果,后台计算结果的类型。
在this中也提到了很好的答案。
但是,为什么将Void
作为结果类型导致Android Studio在doInBackground
行上发出以下警告:
doInBackground(String...)' in '(..)MainActivity.myTask' clashes with 'doInBackground(Params...)' in 'android.os.AsyncTask'; attempting to use incompatible return type
这是AsyncTask
的声明方式:
private class myTask extends AsyncTask<String,Void,Void> {
@Override
protected void doInBackground(String... url) {
//do stuff with url[0]
}
@Override
protected void onPostExecute() {
//more stuff
}
}
相比之下,这似乎工作正常:
private class myTask extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... url) {
//do stuff with url[0]
return "hi";
}
@Override
protected void onPostExecute(String result) {
//more stuff
}
}
请注意,有关此主题的各种问题,但大多数问题只是弄乱了AsyncTask
参数或参数,并在类中返回值。
答案 0 :(得分:5)
试试这段代码
private class myTask extends AsyncTask<String,Void,Void> {
@Override
protected Void doInBackground(String... url) {
//do stuff with url[0]
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//more stuff
}
}