从Android中的AsyncTask返回值
一个简单的问题:是否可以返回in的值AsyncTask
?
//AsyncTask is a member classprivate 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 activitymyTask.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