执行方法异步任务

时间:2013-07-18 18:15:32

标签: android json android-asynctask

我不确定此问题是否曾在此问过。使用myTask.execute();执行异步任务时,从一开始就运行什么方法。我正在学习本教程:http://mobiforge.com/developing/story/consuming-json-services-android-apps用于使用JSON服务,作者正在使用new ReadWeatherJSONFeedTask() .execute()以及一些参数。我很困惑哪个方法首先运行以及如何传递参数以获得结果。 任何人都可以帮助我。

感谢!

2 个答案:

答案 0 :(得分:4)

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

  1. onPreExecute()---它在UI线程上运行
  2. doInBackground()和onProgressUpdate() - 它们在工作线程上运行
  3. 和onPostExecute()---在UI线程上运行。

答案 1 :(得分:0)

根据Android API参考AsyncTask,

  

执行异步任务时,任务将经历4个步骤:

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

这解释了Ui Thread上的onPreExecute()在最开始执行。

Guide可能会帮助您在这方面提供更多帮助。