zoukankan      html  css  js  c++  java
  • 【转】 Pro Android学习笔记(九二):AsyncTask(1):AsyncTask类

    文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处:http://blog.csdn.net/flowingflying/

    在Handler的学习系列中,学习了如何handler实现worker线程与主线程(UI线程)之间的通信。这是一种通用的处理方式,因此Android SDK将handler和线程隐藏,抽象出来形成AsyncTask抽象类,方便开发者使用。之前有过一篇很好的博文:Android学习笔记(三二):线程:后台异步任务AsyncTask,详细介绍了AsyncTask的使用方式。

    AsyncTask类的参数类型

    下面列出AsyncTask类的几个重要方法。AsyncTask的这种参数传递方式,让我想起以前的C编程或者命令行,我们不确定function中带多少个参数,同样也不确定命令会输入多少个参数,可能没有,也可能很多。AsyncTask就采用这种generics方式,实现任意参数数量。

    我们将参数类型Params用红色标出。如果我们Params的数据类型是String,那么String… params就是说可以带任意个String对象。Java将之视为数组,长度为params.length,数值通过params[i]来读取。例如对象task.execute("Hello","world","Good morning");,就是带有三个String参数,而task.execute("1","2","3","4","5","6","7");带有七个String的参数,其中params[4]是"5"。

    如果Params,Progress,Result的数据类型分别是String array,Integer array和int,则继承了为MyTask<String,Integer,Integer>。如果我们确定不传递任何参数,可以用Void,例如private class MyTask extends AsyncTask<Void, Void, Void> { ... }

    public class AsyncTask<Params,Progress, Result>

        //A client will call this method 
        AsyncTask<ParamsProgress, Result> 
        execute(Params.... params);
        //Do your work here 
        //Frequently trigger onProgressUpdate() 
        Result doInBackGround(Params... params);
        //Callback: After the work is complete 
        void onPostExecute(Result result); 
        //Callback: As the work is progressing 
        void onProgressUpdate(Progress.... progressValues);
    }

    下面通过小例子实现来进行详细介绍。

    相关链接: 我的Android开发相关文章

  • 相关阅读:
    Vue之VsCode开发工具配置
    解决 WPF AllowsTransparency = true 和 Webbrowser 等控件显示冲突
    Html 之div+css布局之css选择器
    Html 之div+css布局之css基础
    Html 之菜单导航(二)
    Html 开发工具 之Hbulider
    设置form窗体背景透明
    中型WPF客户端开发项目总结(4)
    中型WPF客户端开发项目总结(3.3.4)
    中型WPF客户端开发项目总结(3.3.3)
  • 原文地址:https://www.cnblogs.com/blongfree/p/5048098.html
Copyright © 2011-2022 走看看