Один простой вопрос: возможно ли вернуть значение в AsyncTask
?
//AsyncTask is a member class
private class MyTask extends AsyncTask<Void, Void, Void>{
protected Void doInBackground(Void... params) {
//do stuff
return null;
}
@Override
protected void onPostExecute(Void result) {
//do stuff
//how to return a value to the calling method?
}
}
И затем в моей Activity
/Fragment
:
// The task is started from activity
myTask.execute()
// something like this?
myvalue = myTask.getvalue()
EDIT: Это было задано давно, когда я не был знаком с Java, теперь, когда мне будет лучше, я сделаю краткое резюме:
Точка задачи async заключается в том, что задача asynchronous
, а это означает, что после вызова execute()
в задаче задача запускается в потоке. Возвращение значения из asynctask было бы бессмысленным, потому что исходный поток вызовов уже выполнял другие вещи (при этом задача была асинхронной).
Подумайте о времени: В какой-то момент вы запустили задачу, которая будет работать параллельно с основным потоком. Когда выполнение параллельной задачи завершено, время также продолжается по основному потоку. Параллельная задача не может вернуться во времени, чтобы вернуть значение в основной поток.
Я приехал из C, поэтому я мало знал об этом. Но похоже, что у многих людей возникает один и тот же вопрос, поэтому я подумал, что немного проясню это.