0

我不确定之前是否曾在 SO 上问过这个问题。使用myTask.execute();一开始运行的方法执行异步任务时。我正在关注本教程: http: //mobiforge.com/developing/story/sumption-json-services-android-apps用于消费 JSON 服务,作者正在使用new ReadWeatherJSONFeedTask() .execute()一些参数。我对首先运行哪个方法以及如何传递参数以获得结果感到困惑。谁能帮我。

谢谢。!

4

2 回答 2

4

asyncTask 需要的参数,在定义扩展 asyncTask 的类时声明。方法的执行顺序是:

  1. onPreExecute() --- 它在 UI 线程上运行
  2. doInBackground() 和 onProgressUpdate() - 它们在工作线程上运行
  3. 和 onPostExecute() --- 在 UI 线程上运行。
于 2013-07-18T18:21:30.287 回答
0

根据 Android API Reference AsyncTask,

当一个异步任务被执行时,任务会经过 4 个步骤:

  1. onPreExecute(),在任务执行之前在 UI 线程上调用。此步骤通常用于设置任务,例如通过在用户界面中显示进度条。
  2. doInBackground(Params...),在 onPreExecute() 完成执行后立即在后台线程上调用。此步骤用于执行可能需要很长时间的后台计算。异步任务的参数传递到这一步。计算的结果必须由这一步返回,并将传递回最后一步。此步骤还可以使用 publishProgress(Progress...) 来发布一个或多个进度单位。这些值在 UI 线程上的 onProgressUpdate(Progress...) 步骤中发布。
  3. onProgressUpdate(Progress...),在调用 publishProgress(Progress...) 后在 UI 线程上调用。执行的时间是不确定的。此方法用于在后台计算仍在执行时在用户界面中显示任何形式的进度。例如,它可用于动画进度条或在文本字段中显示日志。
  4. onPostExecute(Result),在后台计算完成后在 UI 线程上调用。后台计算的结果作为参数传递给该步骤。

正如这onPreExecute()在 Ui 上解释的那样,线程在一开始就被执行。

指南可能会在这方面为您提供更多帮助。

于 2013-07-18T18:24:47.973 回答