一、AsyncTask的作用:
代替Thread+Handler的组合,使创建异步任务变得简单,
Android中AsyncTask使用
。AsyncTask执行后台操作,并在用户界面上发布结果,而不必处理线程。
二、AsyncTask的定义:
public abstract class AsyncTask
AsyncTask必须子类可以使用。子类将覆盖至少一个方法(doInBackground执行异步任务),通常会覆盖一次(onPostExecute显示结果,更新UI)
AsyncTask三种类型如下:
》Params,参数的类型发送到任务执行时。
》Progress,在后台计算过程中公布的进度单元类型。
》Result,计算结果的类型。
不是所有类型都是异步任务所使用的。要标记为未使用的类型,设置该类型Void:
三、AsyncTask的方法:
1、onPreExecute()
在任务开始后立即调用,在UI线程执行。这一步通常用于设置任务,例如在用户界面中初始化进度条。
2、doInBackground(Params...)
后台线程调用onPreExecute()完成后立即执行。这一步后台进程执行,可能会花费很长时间。
3、onProgressUpdate(Progress...)
调用publishProgress,在UI线程上执行,
电脑资料
《Android中AsyncTask使用》(http://meiwen.anslib.com)。这种方法是用来显示用户进度界面,后台进程仍在执行。例如,它可用于显示一个进度条或在文本中显示日志。4、onPostExecute(Result)
后台进程处理完后,在UI线程上执行。后台进程的结果被传递到这一步作为参数。
常用的写法如下:
class MyTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { //执行异步任务 int n = 10; //调用publishProgress公布进度,最后onProgressUpdate方法将被执行 publishProgress(n); Thread.sleep(500); return null; } @Override protected void onPostExecute(String result) { //更新UI,显示结果 } @Override protected void onProgressUpdate(Integer... values) { //更新进度信息 }
new MyTask().execute();//执行任务
三、AsyncTask的规则:
1、任务实例必须在用户界面线程中创建。
2、execute(Params... params)方法必须在UI线程中调用。
3、不要手动调用onPreExecute,doInBackground,onProgressUpdate,onPostExecute这些方法
4、一个任务实例只能执行一次,如果执行第二次将会抛出异常