【发布时间】:2016-12-23 22:22:53
【问题描述】:
从Google's Android Documentation 看到,我们看到了
Params,执行时发送给任务的参数类型。
Progress,后台计算时发布的进度单元的类型。
Result,后台计算结果的类型。
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 参数或类中的参数和返回值。
【问题讨论】: