从Android中的AsyncTask返回值

一个简单的问题:是否可以返回in的值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()

编辑:这是很久以前我不熟悉Java的地方问的,现在我对它有了更好的了解,我将做一个简短的总结:

异步任务的要点是该任务为asynchronous,这意味着调用execute()该任务后,该任务将在其自己的线程上开始运行。从asynctask返回一个值将毫无意义,因为原始的调用线程已经进行了其他工作(因此该任务是异步的)。

考虑时间:在某个时间点,你启动了一个将与主线程并行运行的任务。当并行运行任务完成时,主线程上的时间也已过去。并行任务无法及时返回以将值返回到主线程。

我来自C,所以对此我不太了解。但是似乎很多人都在问同样的问题,所以我想我会澄清一下。

回答:

为什么不调用处理该值的方法?

public class MyClass extends Activity {

private class myTask extends AsyncTask<Void, Void, Void> {

//initiate vars

public myTask() {

super();

//my params here

}

protected Void doInBackground(Void... params) {

//do stuff

return null;

}

@Override

protected void onPostExecute(Void result) {

//do stuff

myMethod(myValue);

}

}

private myHandledValueType myMethod(Value myValue) {

//handle value

return myHandledValueType;

}

}

以上是 从Android中的AsyncTask返回值 的全部内容, 来源链接: utcz.com/qa/400233.html

回到顶部