Android中AsyncTask使用 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

    一、AsyncTask的作用:

    代替Thread+Handler的组合,使创建异步任务变得简单,

Android中AsyncTask使用

    AsyncTask执行后台操作,并在用户界面上发布结果,而不必处理线程。

    二、AsyncTask的定义:

    public abstract class AsyncTask extends Object

    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、一个任务实例只能执行一次,如果执行第二次将会抛出异常

最新文章