<!-- @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. 后台处理后结果的返回类型。
这些内容都是帮助文档的内容。有不准确的地方还请指出来。