【问题标题】:Updating a ProgressDialog using an AsyncTask使用 AsyncTask 更新 ProgressDialog
【发布时间】:2011-09-25 13:18:19
【问题描述】:

当我从网络获取数据时,我需要一个 AsyncTask 来运行我的 ProgressDialog。 我了解异步任务。但是我在十几个地方都有网络电话。由于我对网络的调用来自不同的 Activity,如何为所有这些调用重用单个 AsynchTask 类?

这让我在 Activity 中有网络调用的任何地方都重写了 AsyncTask。

【问题讨论】:

  • 您想在一个异步中下载多个文件,还是在多个活动中使用一个异步?
  • 是的,我想在所有网络调用中重用一个 ashyncTask。这个类需要为所有即将到来的网络调用处理一个 ProgressDialog。感谢您的快速回复

标签: android android-asynctask


【解决方案1】:

在不知道代码的全部细节的情况下,我听上去好像您可能以一种从未想过的方式使用 AsyncTask。

来自docs:

此类允许在 UI 线程上执行后台操作并发布结果,而无需操作线程和/或处理程序。

在我看来,AsyncTask 适用于相对简单的异步任务,例如单个文件下载/流等。一旦需要更复杂的异步任务,那么也许利用需要线程的全部功能。这一切都归结为为任务设计和正确选择可用工具......

【讨论】:

  • 我想在所有网络调用中重用的单个 ashyncTask。从我的应用程序中的不同活动中,我想调用此 asyncTask 并获取数据。它将获取 URL 作为参数并执行 HTTP GET 并返回结果。并且这个类需要为所有即将到来的网络调用处理一个 ProgressDialog,直到从 url 得到响应。感谢您的快速回复
【解决方案2】:

这完全取决于您的网络调用的参与程度。如果它们很快并且您没有提取大量数据,那么 AsyncTask 就可以了。

最终,您需要做的是清理代码并确保您没有重复任何逻辑。确保将所有重复的逻辑放在一个方法中。

为了避免为每个 Activity 重写 AsyncTask,请创建一个“父”Activity 类,在其中定义自己是 AsyncTask(以及任何其他重复的逻辑)。然后让需要运行 AsyncTask 的 Activity 扩展此 Activity。

但是,如果您的网络调用有些涉及,您可能会想要研究另一种方法。您可能想要定义一个服务并将您的所有活动绑定到该服务。

【讨论】:

  • 我想你可以帮我编写你的逻辑我的意思是你上面定义的超级类活动
  • 嘿,请想想一个活动如何扩展第二个父类,所以这种方式永远不会有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 2015-04-15
相关资源
最近更新 更多