资讯_AsyncTask简介

1.认识AsyncTask
AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。AsyncTask直接继承于Object类。

AsyncTask定义了三种泛型类型Params,Progress和Result。
Params启动任务执行的输入参数,比如HTTP请求的URL。
Progress后台任务执行的百分比
Result后台执行任务最终返回的结果,比如String
必须重写两个方法:
doInBackground(Params…)后台执行,比较耗时的操作都可以放这里。
注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要任务,通常需要较长的时间。
在执行的过程中可以调用publicProgress(Progess…)来更新任务的进度。
onPostExecute(Result)相当于Handler处理UI的方式,在这里可以使用在doInBackground得到的结果处理UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回。
不必须重写以下三个方法:
onProgressUpdate(Params…)可以使用进度条添加用户体验度。此方法在主线程执行,用于显示任务执行的进度。
onPreExecute()这里是最终用户调用Execute的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
onCancelled()用户调用时,要做的操作
AsyncTask使用有一些限制,需要注意:
AsyncTask类必须在UI线程中加载。在Android4.1之后由系统自动完成。
AsyncTask实例必须在UI线程中创建。
execute(Params…)方法必须在UI线程中调用。
不要手动调用提供的四个回调方法。
每个AsyncTask实例只能执行一次
2.了解AsyncTask的原理
在这里插入图片描述
3.掌握AsyncTask的使用场景
在这里插入图片描述
4.掌握AsyncTask的常用方法
doInBackground(Params…)后台执行,比较耗时的操作都可以放这里。
注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要任务,通常需要较长的时间。
在执行的过程中可以调用publicProgress(Progess…)来更新任务的进度。
onPostExecute(Result)相当于Handler处理UI的方式,在这里可以使用在doInBackground得到的结果处理UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回。
5.掌握AsyncTask的执行流程(分析)
在这里插入图片描述
1.AsyncTask的基本使用

//第一个泛型 代表你要给子线程传的东西
//第二个泛型 代表任务执行的进度  用Integer
//第三个泛型 代表解析完成后子线程返回的值,以及主线程接受的值
//第四:继承AsyncTask,然后写三个泛型,< String,Integer,String>
public class MyAsyncTask extends AsyncTask<String,Integer,String> {

    @Override
    protected String doInBackground(String... strings) {
        //代表子线程
        //利用子线程请求数据
        return Http.requestHttpUrl(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //主线程
        //调用
        callBackS.getData(s);
    }
    //创建接口
    public interface CallBackS{
        //抽象方法
        void getData(String str);
    }

2.熟悉AsyncTask的优缺点
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43797842/article/details/85331016