异步任务类AsyncTask上分析

异步任务类AsyncTask下分析

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

. 异步任务

 

异步任务可以适当的/ 易用与UI 线程当中,这个类允许执行后台操作,并在不操作线程和handler 的情况下将处理后的数据返回给UI 线程。

异步任务的设计是线程类(Thread )和Handler 类的一个辅助类,该类并不构成通用线程框架。异步任务建议在处理耗时较短的操作上使用(以秒单位的操作上),如果需要线程需要处理耗时较长的操作,建议使用java java.util.concurrent 包中的Executor ThreadPoolExecutor FuturTeask 类。

异步任务类是个抽象类,使用时必须使用子类,并在子类中必须重写doInBackground() 方法。

 

1 )当异步任务执行过程中,可以分为下4 步:

 

1.onPreExecute()

异步任务开始执行时直接调用这个方法。(即execute() 调用后)这个方法里功能通常所让UI 中显示进度条。

 

2.doInBackground(Params …)

该方法在onPreExecute() 执行完后直接执行,UI 中的参数直接传递到这个方法中,参数被处理后有这个方法传递给最后的一个方法(onPostExecute() 方法)。同时在处理过程中通过调用publishProgress() 方法可以,引发onProgressUpdate 方法的调用

 

3.onProgressUpdate(Progress …)

更新UI

4.onPostExecute(Result)

后台处理完成后执行该方法。后台数据传递给该方法。

 

2 )取消任务

在任何时候只要执行cancel(boolean) 方法,当前任务就会被取消,随后引发isCancelled() 方法的执行,该方法返回true.isCancelled() 方法执行之后,任务不再执行onPostExecute() ,而是执行onCancelled(Object) 方法。

 

注意:

1. 异步任务在UI 线程中被声明。

2. 异步任务在UI 线程中被启动执行。

3. 不需要手动调用onPreExecute()/onPostExecute()/doInBackground() 等方法。

4. 异步任务只能启动一次,试图启动两次会抛出异常。

 

参数的类型

AsyncTask<Params, Progress, Result>

 

1.Params UI 线程传递给后台操作的数据类型(即execute() 方法的参数类型)

2.Progress 后台处理过程中的数据类型(即publishProgress() onProgressUpdate 参数接受的类型)

3.Result. 后台处理后结果的返回类型。

这些内容都是帮助文档的内容。有不准确的地方还请指出来。