【问题标题】:How does extends AsyncTask<Void, Void, Long> work扩展 AsyncTask<Void, Void, Long> 如何工作
【发布时间】:2011-04-14 12:46:12
【问题描述】:

我想知道它是如何工作的。我已经阅读了几次文档,但不明白。

我注意到在某些情况下onPostExecute 什么都不做。

谁能给我解释一下?

【问题讨论】:

    标签: android android-asynctask extends


    【解决方案1】:

    AsyncTask 是从Thread 派生的一个类,它为您提供了一种简单而正确的在后台执行某些操作的方法,并具有通知UI Thread 的能力。

    为了使用它,您应该创建一个class,其中extends 它并定义类型参数。它们是ParamsProgressResult。阅读更多关于他们的信息here

    onPostExecute() 是当doInBackground() 完成执行时调用的方法,但onPostExecute() 在UI 线程上运行。因此,您可以通知 UI 工作已完成。

    您可以查看AsyncTask 使用here 的示例。

    【讨论】:

      【解决方案2】:

      &lt;Void, Void, Long&gt; 部分在 Java 中称为 Generics。它用于那些原始编码人员希望使用它的类,无论“最终用户”选择什么类型。

      当您想要启动/停止进度对话框时,通常使用onPre/PostExecute()

      如果您想在没有进度对话框的情况下在进度期间更新 UI,您可以在 onProgressUpdate() 中执行操作(即:您正在从网络加载图像并在加载时显示它们)

      如果您有一个带有进度条的对话框,您必须使用所有这些来更新进度条。

      【讨论】:

      • 是的,但我注意到,如果你做 Void,Void,Void,onPostExecute 什么都不做......
      • @M.V.:该方法将doInBackground() 返回的内容作为参数。最后一个Void 表示您没有返回值(这是合法的),因此onPostExecute() 将不接受任何参数。不过,您仍然可以在那里停止一个不确定的进度对话框。
      【解决方案3】:

      This 帖子用图表很好地解释了 AsyncTask 概念!

      【讨论】:

        【解决方案4】:

        {onPostExecute()}用于在完成后台任务{(doInBackground())}之后想做某事。

        例如,

        start Progress Bar @ {onPreExecute()}
        running Progress Bar @ {doInBackground()}
        stop Progress Bar @ {onPostExecute()}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-16
          • 1970-01-01
          • 1970-01-01
          • 2021-12-04
          • 1970-01-01
          相关资源
          最近更新 更多