如何获取AsyncTask的返回值并进行处理?

3

我有一个AsyncTask,它返回一个包含两个元素的map。我是这样做的:

        Map<String, ArrayList<String>> result = new HashMap<String, ArrayList<String>>();
        result.put("usernames", usernames);
        result.put("messages", messages);

    return result;

现在我在另一个Activity中调用这个异步任务:

new ReadChat().execute(response);

我该如何从这个异步任务(从doInBackground())获取返回的数据呢?


实现onPostExecute,并从此处启动一个新的活动。 - Tobias Moe Thorstensen
好的,我发现只需在Activity中创建一个新的Map,调用Async并执行.get()即可,不管怎样还是谢谢。 - Phil
回答你自己的问题并给出正确的答案,或者将其删除。 - Timmetje
但是使用get()方法后,它就不再是异步的了。 - Gabe
2个回答

0
如何从AsyncTask中的另一个Activity获取返回的数据?
起初我认为你的问题不是很清楚。这取决于“你想用这些数据做什么”。AsyncTask被指定了三个我们可以说是“主要”的方法:
- onPreExecute() - 在任务开始之前调用 - doInBackground() - 在后台“默默地”做一些工作 - onPostExecute() - 在doInBackground()完成后调用
因此,如果你的doInBackground()方法返回Map>,你可以在以它为参数的onPostExecute()中使用它。
@Override
public void onPostExecute(Map<String, ArrayList<String>> result) {
   // do some stuff
}

在这里,您可以随心所欲地处理结果,例如使用这些数据更新您的UI,使用SharedPreferencesSQLite持久化数据,进行一些下一步计算等。


0
你需要将 ReadChat 实例存储在某个地方。然后,在 ReadChat 内部设置值,等待它完成,然后再读取这些值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接