我想知道AsyncTask的所有四种方法之间的技术区别。
我不想询问调用方法的顺序。我想知道这两种方法之间的主要技术差异,这两种方法会彼此区分。
答案 0 :(得分:3)
onPreExecute()
,在执行任务之前在UI线程上调用。 此步骤通常用于设置任务,例如通过显示 用户界面中的进度条。
doInBackground(Params...)
,在后台线程上调用 在onPreExecute()完成执行之后立即执行。使用此步骤 执行可能需要很长时间的后台计算。的 异步任务的参数将传递到此步骤。的 计算结果必须通过此步骤返回,并且将是 回到最后一步。此步骤也可以使用 publishProgress(Progress ...)发布一个或多个进度单位。 这些值发布在UI线程的 onProgressUpdate(Progress ...)步骤。
onProgressUpdate(Progress...)
,在调用后在UI线程上调用 到publishProgress(Progress ...)。执行的时间是 未定义。此方法用于显示进度中的任何形式的进度 用户界面,而后台计算仍在执行。 例如,它可以用于为进度栏设置动画或显示日志 一个文本字段。
onPostExecute(Result)
,在后台之后在UI线程上调用 计算完成。后台计算的结果是 传递给此步骤作为参数。