【问题标题】:How do I get return value from AsyncTask to Main Activity?如何从 AsyncTask 获取返回值到 Main Activity?
【发布时间】:2011-10-07 09:37:35
【问题描述】:

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

【问题讨论】:

标签: android android-asynctask


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 2012-05-21
      相关资源
      最近更新 更多