【发布时间】:2019-05-15 23:22:43
【问题描述】:
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 中运行的“延续”是否也被视为任务,因为它在主线程上运行,但也可以“调度”在同一线程上与其他“任务”一起运行(如点击处理程序或在 onResume 之类的生命周期覆盖上)?
【问题讨论】:
-
在 doInBackground 中执行,preExecute 和 postExecute 在 UI 线程中执行 developer.android.com/reference/android/os/AsyncTask
-
@JoaquinAlvarez 但是
doInBackground在一个单独的线程中运行,在 UI 之外,所以是“异步”,或者是当postExecute计划在 UI 上运行时,以及说点击事件处理程序? -
我认为异步部分是 doInbackGround 因为它是一个单独的线程,而 postexecute 和 preexecute 使用 UI 线程
-
@JoaquinAlvarez 但是
doInbackGround不是“并行”运行的吗? -
@JoaquinAlvarez blogs.msdn.microsoft.com/benwilli/2015/09/10/…
标签: android asynchronous android-asynctask