AysncTask和CallBack部分复习

1. 网络的异步任务、AsyncTask、CallBack

2. 网络的异步任务并更新UI实现方式:
    本质来讲,基本上都是通过Thread + Handler来实现
    a. Thread + 自定义Handler方式:使用最广泛,也是最灵活,自定义性最强。
        Thread:负责执行耗时操作和通知UI更新(sendXXXMessageXXX发消息)
        Handler:更新UI(Handler的对象必须是创建在UI线程)
    b. Thread + Handler的post方法:使用比较简单,Handler的对象也要创建在UI线程
        post方法的参数是一个Runnable对象,在其run方法中实现更新的操作
    c. Thread + Activity的runOnUiThread方法:使用也很简单
        runOnUiThread参数也是一个Runnable对象,在其run方法中实现更新操作
    d. Thread + BroadcastReceiver方式:
        在Thread里执行耗时操作,然后发广播
        在BroadcastReceiver中,收到广播,然后更新UI。在onReceive方法中不能执行太多的操作
    e. AsyncTask方式:简单易用。
        在doInBackGround里执行耗时操作
    f. 其他方式:网络上的一些开源框架,比如xUtils、afinal、volley。。。。

3. AsyncTask:基本使用,三个泛型参数<Path, Progress, Result>
    Path: 指定异步任务资源(通常是一个网络地址字符串或者URL)
        可变长度的参数,
            传入的位置是在execute(Path)方法中
            接收的位置doInBackGround(Path)方法
    Progress:可变长度的参数,表示进度值
            传入的位置在publishProgress(Progress)    
            接收的位置在onUpdateProgress(Progress)
    Result: 异步任务执行的结果
            指定doInBackGround的返回值类型
            指定onPostExecute的参数类型

    几个方法的意义:
        onPreExecute:在执行耗时操作之前调用,在其中需要执行一些初始化的工作
            比如,初始化进度条对话框或者给一些变量赋初始值
        doInBackGround:执行在子线程当中,主要在其中执行一些耗时操作。比如,
            网络任务上传下载、访问数据库或者ContentProvider、复杂的运算等
            如果需要实时的更新进度,需要在其中不断的调用publishProgress来
            通知onUpdateProgress更新进度。
        onUpdateProgress:收到publishProgress的通知之后,进行进度更新
        onPostExecute:主要接收doInBackGround的返回值,耗时操作的执行结果
            可以在该方法中更新UI的显示
    
    使用的方式:
        a. 创建异步任务类的对象MyAsyncTask的对象task
        b. 调用execute方法来启动异步任务task.execute(Path);

    调用的基本顺序:
        onPreExecute --> onDoInBackGround --> (onUpdateProgress) --> onPostExecute
    
4. CallBack回调接口的使用:
    关键就是搞清楚回调方法:定义的位置、实现的位置、调用的位置
        定义的位置:该内部接口中
        实现的位置:在使用的地方,需要得到该接口对象的地方
        调用的位置:内部接口所在的类当中
    使用CallBack的好处:把接口方法的定义和调用给封装起来,让工具类的使用变得简单易用。
        用户不需要关心接口方法的定义以及调用,只需要关注方法的具体实现功能即可。

 

posted on 2015-10-20 10:08  敬的男人  阅读(194)  评论(0)    收藏  举报