如何从AsyncTask获取返回值到主要活动?

时间:2011-10-07 09:37:36

标签: android android-asynctask

我有一个类(比如帮助类) - 不是一个管理soap请求的活动。我使用此类通过方法doInBAckground发送来自活动的soap请求,并通过onpostexecute捕获来自webservice的所有返回值。一切都还可以,但我的问题从这一点开始,因为我无法将返回值asynctask类传递给主类。

2 个答案:

答案 0 :(得分:1)

你可以使用一些实用程序类作为单例(好吧,单例是危险的模式 但它的使用在android中是合理的,直到我们得到理智和usabel依赖注入)并在那里传递结果。

Advandatges:     - 没有搞乱意图/序列化     - 传递数据或调用一些methid或做任何你喜欢的事情     - 您的所有活动共享相同的单件服务实例。

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

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

或者您可以更进一步 - 在async服务中将您的活动注册为侦听器,并在准备好时调用此活动中的方法(注意:因为这不是UI线程,否则您将无法使用UI执行某些操作你使用runOnUiThread()

答案 1 :(得分:1)

您是否尝试过将AsyncTask实现为Activity的内部类?