Как виден из Google's Android Documentation мы видим, что`doInBackground()` типа void не принимается `AsyncTask`?
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
и возвращает значения в классе.
О, я не знаю, что использование 'Void' проходящее на нуль, спасибо! – PHPirate
приветствуются –