从 Android 中的 AsyncTask 返回一个值
2022-08-31 08:40:21
一个简单的问题:是否可以在 中返回值?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的地方,现在我对它更好,我会做一个快速的总结:
异步任务的要点是 任务是 ,这意味着在调用任务后,任务开始在自己的线程上运行。从 asynctask 返回值是毫无意义的,因为原始调用线程已经继续执行其他操作(因此任务是异步的)。asynchronous
execute()
想想时间:在某个时间点,您启动了一个将与主线程并行运行的任务。并行运行任务完成后,主线程上的时间也已过。并行任务无法及时返回以将值返回到主线程。
我来自C,所以我对此知之甚少。但似乎很多人都有同样的问题,所以我想我会把它弄清楚一下。