1

就我而言,我需要从网络中获取一些数据,对其进行处理,然后根据第一次网络查询的结果从网络中获取其他数据。但是,第一个查询可能会产生用户干预的需要......或者不是。

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

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

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

还是我在这里无所事事?


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

4

3 回答 3

1

我认为您应该尝试为您的网络请求使用后台服务并相应地更新 UI。您可以使用意图服务进行网络操作并广播更新到活动以刷新 UI。希望能帮助到你。

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

于 2012-04-23T15:55:16.443 回答
0

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

于 2012-04-23T15:57:35.203 回答
0

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

这意味着轻量级和简单的实现。

于 2012-04-30T12:12:14.557 回答