AsyncTask是不更新UI的众多步骤之一

时间:2012-04-23 15:51:57

标签: android android-asynctask

在我的情况下,我需要从网络获取一些数据,处理它,然后根据第一次网络查询的结果从网络获取其他数据。 但是,第一个查询可能会产生用户干预的需要......或者不是。

我理解AsyncTask如何运行,然后在UI对象中显示它的结果。 但是,我应该如何“链接”一起操作,以便在开始新操作之前第一个AsyncTask派生对象正确死亡。

我的想法是,当调用onPostExecute时,如果我启动另一个基于UI的操作,它将不会终止,直到基于UI的操作终止。

是否有正确的方法来完成AsyncTask进程,将结果发送给调用对象,清理,调用对象可以自己进行处理吗?

或者我在这里无所事事?


编辑:请注意我的问题是关于AsyncTask后台处理以及如何正确使用它来避免执行堆栈溢出。我不是在问我是否应该使用这种方法。

3 个答案:

答案 0 :(得分:1)

我认为您应该尝试使用后台服务来处理网络请求并相应地更新UI。您可以使用意图服务进行网络操作,并将活动的广播更新广播以刷新UI。希望它有所帮助。

编辑:此外,关于取消请求,我认为最好实现一个服务并使用Activity上的bindService()附加到它。这样,如果有取消请求,您可以通知服务停止它正在做的任何事情。

答案 1 :(得分:0)

基于UI的操作永远不应该(!)阻止工作流,也许您应该使用ViewSwitchers或BackgroundServices并最近更新UI,而不是阻止某些行为。

答案 2 :(得分:0)

最好的方法是在经过大量搜索后发现使用消息处理程序。 这意味着,在线程操作结束时,它会将结果的消息发布到UI代码(而不是UI小部件注释),然后可以干净地终止。

这意味着轻松而简单的实施。