Template method
行为设计模式中的一种,定义一个操作中算法的框架(abstract class),而将一些步骤推迟到子类中,让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。
实例 Android AsyncTask
public abstract class AsyncTask<Params, Progress, Result>
参数含义:
Params :启动任务执行的输入参数
Progress:后台任务执行的进度
Result:后台计算结果的类型
一个异步任务的执行一般包括以下几个步骤:
-
execute(Params... params)
,在UI线程中调用此方法,触发异步任务的执行。 -
onPreExecute()
,在UI线程中运行,在后台任务执行前,可以对对UI做一些操作。 -
onPreExecute(Params... params)
,在子线程中运行的操作,此方法将接收输入参数并返回结果。在执行过程中可以调用publishProgress(Progress... values)
来更新进度信息。 -
onProgressUpdate(Progress... values)
,在在后台调用publishProgress(Progress... values)
时,在UI线程中运行,可以将进度信息更新到UI组件上。 -
onPostExecute(Result result)
,在UI线程上运行,当后台操作结束时,此方法将会被调用,返回值会传递到此方法中
总之,AsyncTask内部封装了onPreExecute 、onPreExecute、onPostExecute这几个逻辑流程,可以根据自己的需要重写方法,可以方便的通过异步任务来完成耗时的操作以及更新UI。