AsyncTask

来源:互联网 发布:office 2017 for mac 编辑:程序博客网 时间:2024/05/01 13:18

一.AsyncTask的泛型类型:

这三个类型被用于一个异步任务,如下:

1 Params,启动任务执行的输入参数

2 Progress,后台任务执行的百分比

3 Result,后台计算的结果类型

二.当一个异步任务被执行,任务经过四各步骤:

1.onPreExecute(),在UI线程上调用任务后立即执行。这步通常被用于设置任务,例如在用户界面显示一个进度条。

2.doInBackground(Params...),后台线程执行onPreExecute()完后立即调用,这步被用于执行较长时间的后台计算。异步任务的参数也被传到这步。计算的结果必须在这步返回,将传回到上一步。在执行过程中可以调用publishProgress(Progress...)来更新任务的进度。

3.onProgressUpdate(Progress...),一次呼叫 publishProgress(Progress...)后调用 UI线程。执行时间是不确定的。这个方法用于当后台计算还在进行时在用户界面显示进度。例如:这个方法可以被用于一个进度条动画或在文本域显示记录。

4.onPostExecute(Result), 当后台计算结束时,调用 UI线程。后台计算结果作为一个参数传递到这步。

三.线程的规则:

1.有一些线程规则必须去遵守,这个类才会正确的工作:

2.任务实例必须创建在 UI线程

3.execute(Params...)必须在UI线程上调用

4.不要手动调用onPreExecute(), onPostExecute(Result), doInBackground(Params...), onProgressUpdate(Progress...)

5.这个任务只执行一次(如果执行第二次将会抛出异常)