实现异步操作三步的步骤:
创建AsyncTask的子类, 并为三个泛型参数指定类型。如果摸泛型参数不需要指定类型,则可将它指定为Void.
更具需求,实现AsyncTask的如下方法:
doInBackground(Params...):重写该方法就是后台线程将要完成的任务。 该方法可以调publishProgress(Progress... values)方法更新任务的执行进。
onProgressUpdate(Progress... values):在 doInBackground()方法中调用publishProgress()方法更新任务的执行进度后,将会触发该方法。
onPreExecute():该方法将在执行后台耗时操作前被调用。通常该方法用于完成一些初始化工作,比如在界面上显示进度条等。
onPostExceute(Result result):当DoInBackground()完成后,系统会自动调用onPostExecute()方法,并将doInBackground()方法的返回值创给该方法。调用AsyncTask()子类的实例的execute(Params... params)开始执行耗时操作。
使用AsyncTask时必须遵循如下规则:
a.必须在UI线程中创建AsyncTask的实例
b.必须在UI线程中调用AsyncTask的execute()方法
c.AsyncTask onPreExecute(),onPostExceute(Resultresult),doInBackground(Params...),onProgressUpdate(Progress... values)方法,不应该有程序员代码调用,而是有Android系统负责调用。
d.每个AsyncTask只能被执行一次,多次调用将会引发异常。