异步操作在AsyncTask中的何处运行



AsyncTask的异步操作是在DoInBackground还是在OnPostExecute中运行?

public class Task1 : AsyncTask
{
protected override void OnPreExecute()
{
}
protected override Java.Lang.Object DoInBackground(params Java.Lang.Object[] @params)
{
return true;
}
protected override void OnPostExecute(Java.Lang.Object result)
{
}
}

更新

我想我想问的是,在DoInBackground中运行的例程/过程/任务是否一定是一个线程,或者它更像是一个任务的抽象概念,如果是,它是否计划这样运行(即,它是否也可以配置为在主线程上运行(。同样,在OnPostExecute中运行的"continuation"是否也被视为任务,因为它在主线程上运行,但也可以"调度"为与同一线程上的其他"task"一起运行(如单击处理程序或onResume等生存期覆盖(

DoInBackground()onPostExecute中异步完成您将获得结果及其UI线程

执行异步任务时,任务要经过以下4个步骤:

  1. onPreExecute(),在执行任务之前在UI线程上调用
  2. doInBackground(Params...),在onPreExecute((完成执行后立即在后台线程上调用
  3. onProgressUpdate(Progress...),在调用publishProgress(Progress…(后在UI线程上调用
  4. CCD_ 11,在后台计算完成后在UI线程上调用

根据文件doInBackground(Params...):

doInBackground(参数…(,在后台线程上调用onPreExecute((完成执行后立即执行。使用此步骤以执行可能需要很长时间的背景计算。这个异步任务的参数被传递给这个步骤。这个此步骤必须返回计算结果返回到最后一步。此步骤还可以使用publishProgress(Progress…(以发布一个或多个进度单位。这些值发布在UI线程上,位于onProgressUpdate(进度…(步骤。

异步任务| Android开发者

为了回答您的问题,任何背景计算都采用doInBackground方法。

相关内容

  • 没有找到相关文章

最新更新