如何从AsyncTask获取返回值并传递给主Activity?

4
我有一个类(类似于帮助程序类) -不是活动- 它管理soap请求。我使用这个类通过doInBackground方法发送来自活动的soap请求,并通过onPostExecute捕获从web服务返回的所有返回值。一切都很好,但我的问题从这一点开始,因为我无法将返回值传递给主类。

2
请查看这个答案 - Adil Soomro
仅使用活动的上下文,将值设置到活动的数据成员中。 - user370305
@AdilSoomro 谢谢。这是最新的可运行代码。http://aaarkonusurum.blogspot.com/2011/10/asynctask-classtan-donen-parametreyi.html - Mustafa Güven
2个回答

1

你可以将一些实用类作为单例模式(虽然单例模式是危险的模式,但在Android中使用它是合理的,直到我们获得明智和可用的依赖注入)并将结果传递给它。

优点: - 不需要处理意图/可序列化 - 传递数据或调用某些方法或者做任何你想做的事情 - 所有的活动共享单例服务的同一个实例。

缺点: - 单例模式被认为是危险的

你甚至可以进一步将你的服务设置为单例-你将启动它的方法作为异步任务,然后你的活动可以通过专用方法查询结果。

或者你可以更进一步-在异步服务中注册你的活动作为监听器,并在准备好时调用此活动中的方法(注意:由于这不是UI线程,除非你使用runOnUiThread(),否则你将无法对UI进行操作)。


1
你尝试过将AsyncTask作为Activity的内部类来实现吗?

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