2011-07-27 35 views
4

我有一个API在一个使用AsyncTask在后台执行一些工作的jar。我需要等待结果返回,然后再用这个结果做更多​​的炒作。AsyncTask - 如何等待onPostExecute()完成之前使用它已更新的值

我发回onPostExecute()方法中的一个类,然后结果在UI线程上处理,但处理程序需要定义为完全不同项目中的回调,所以我不能只做这项工作在onPostExecute。

在第二个项目,我需要等待的AsyncTask结束和应对处理,那么我需要在第二个项目,以显示处理的结果,一个TextView的活动。

Thread.sleep和使用CountDownLatch不起作用,因为处理是在UI线程中完成的。有没有办法做这样的事情?

回答

2

如果我理解正确,您的AsyncTask在一个jar和UI中需要在另一个jar中更新。如果您将它们作为一个应用程序运行,则应该无关紧要。既然你提到了一些回调,你可以在onPostExecute执行这个回调。

以下将是事件的大致顺序

  • 从贮藏室2活动产生异步任务,并通过回调,知道如何更新TextView作为参数传递给构造器
  • AsyncTask专卖店在实例变量
  • 回调
  • 活动执行AsyncTask
  • AsyncTaskonPostExecute调用具有适当参数的回调方法
  • 回调更新TextView
+0

亚历嗨, 非常感谢您的快速和有用的回复。不幸的是(我的不好解释不好,对此感到抱歉)这在我的情况下不起作用,因为我实际上只是使用这个TextView来测试回调处理程序正确地解析一些数据。所以这个问题真的是我想我不能在回调中引用TextView。如果可能的话,我需要'返回'更新TextView的返回值,并保持这些独立。在这种情况下有什么想法?谢谢你帮我澄清这个问题:-) –

+0

你可以试试'Messenger'。我会在此处添加链接,但Android网站似乎已停用。 –

+0

Messenger javadoc:http://developer.android.com/reference/android/os/Messenger.html –

相关问题