一、简介
AsyncTask是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。
AsyncTask是对Handler与线程池的封装。使用它可以更方便之处的更新用户界面。但是它每次创建只能执行一次execute()方法,即创建一个AsyncTask只能执行一次任务,当然execute可以传入多个Params(参数)
二、相关api介绍(仅限参考,具体使用请看代码)
- AsyncTask必须被子类化才能使用 - 1 
 2
 3
 4
 5
 6
 7- /** 
 * public abstract class AsyncTask<Params, Progress, Result>
 * Params 启动任务执行的输入参数,比如HTTP请求的URL。
 * Progress 后台任务执行的百分比。
 * Result 后台执行任务最终返回的结果,比如String。
 */
 private class MyAsyncTask extends AsyncTask<Integer, Integer, String> {...}
- 注意 - Task的实例必须在UI thread中创建;
- execute方法必须在UI thread中调用;
- 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params…), onProgressUpdate(Progress…)这几个方法;
- 该task只能被执行一次,否则多次调用时将会出现异常;
 
- 公共方法(供外部调用的) - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16- // 试图取消对此任务的执行。 
 final boolean cancel(boolean mayInterruptIfRunning)
 // 执行具有指定Params参数的任务。
 final AsyncTask<Params, Progress, Result> execute(Params... params)
 // 便捷的版本execute(Object)以简单的Runnable对象使用,可以是:asyncTask.execute();
 static void execute(Runnable runnable)
 // 执行具有指定参数的任务。
 final AsyncTask<Params, Progress, Result> executeOnExecutor(Executor exec, Params... params)
 // 如有必要,等待至多给定的时间计算完成,然后获取其结果。
 final Result get(long timeout, TimeUnit unit)
 // 如有必要,等待计算完成,然后获取其结果。
 final Result get()
 // 返回此任务的当前状态。
 final AsyncTask.Status getStatus()
 // 返回真,如果之前正常完成这个任务被取消。
 final boolean isCancelled()
- 私有方法(子类实现) 
| 1 | // 覆盖此方法可在后台线程进行计算。(必须重写) | 
三、示例代码
| 1 | // 创建 |