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个步骤:
onPreExecute()
,在执行任务之前在UI线程上调用doInBackground(Params...)
,在onPreExecute((完成执行后立即在后台线程上调用onProgressUpdate(Progress...)
,在调用publishProgress(Progress…(后在UI线程上调用- CCD_ 11,在后台计算完成后在UI线程上调用
根据文件doInBackground(Params...)
:
doInBackground(参数…(,在后台线程上调用onPreExecute((完成执行后立即执行。使用此步骤以执行可能需要很长时间的背景计算。这个异步任务的参数被传递给这个步骤。这个此步骤必须返回计算结果返回到最后一步。此步骤还可以使用publishProgress(Progress…(以发布一个或多个进度单位。这些值发布在UI线程上,位于onProgressUpdate(进度…(步骤。
异步任务| Android开发者
为了回答您的问题,任何背景计算都采用doInBackground
方法。