参考网址:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html

 /*
  *     Params 启动任务执行的输入参数,比如HTTP请求的URL。
  *  Progress 后台任务执行的百分比。
  *  Result 后台执行任务最终返回的结果,比如String
  *
  *  doInBackground(Params…) :后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。
  *                              此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。
  *                              在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。
  *  onPostExecute(Result)      :相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。
  *                              此方法在主线程执行,任务执行的结果作为此方法的参数返回
  *
  *  有必要的话你还得重写以下这三个方法,但不是必须的:
  *      onProgressUpdate(Progress…)       可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。
  *      onPreExecute()                    这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
  *      onCancelled()                     用户调用取消时,要做的操作
  */
     public class MyAsyncTask extends AsyncTask<String, Integer, List<Product>>
     {
         @Override
         protected void onPreExecute()
         {
             Toast.makeText(getApplicationContext(), "开始加载", Toast.LENGTH_SHORT).show();
             super.onPreExecute();
         }

         // * 后台运行耗时操作,不能直接操作主UI线程里面的数据,通过函数publishProgress和onProgressUpdate间接操作主UI线程里面的数据
         @Override
         protected List<Product> doInBackground(String... params)
         {
             // 获取产品列表,不能操作主UI线程内的数据
             List<Product> temProducts = new GetProductService().getProduct(page);
 //            for( Integer i = 0; i < 3; ++i )
 //            {
 //                publishProgress(i);        // 通过调用该函数通知 onProgressUpdate并且在onProgressUpdate中可以修改UI主线程中的参数
 //            }
             return temProducts;
         }

         // * 子线程中调用publishProgress函数通知此函数操作主UI线程中的数据(主要是进度条数据)
         @Override
         protected void onProgressUpdate(Integer... values)
         {
             int vlaue = values[0];     // 获取主线程中调用 publisProgress 传递过来的进度值
             Toast.makeText(getApplicationContext(), "加载进度:" + vlaue, Toast.LENGTH_LONG).show();
             super.onProgressUpdate(values);
         }

 //           相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。此方法在主线程执行,任务执行的结果作为此方法的参数返回
 //        这里的product参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)
 //           在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
         @Override
         protected void onPostExecute(List<Product> product)
         {
             Toast.makeText(getApplicationContext(), "加载完毕", Toast.LENGTH_LONG).show();
             ListUtil.products = products;        // 获取产品列表对象
             isLoading = false;                    // 设置加载标志状态位:加载完毕

             adapter.setProducts(product);
             adapter.notifyDataSetChanged();
             if( product.size() == 0 )
             {
                 Toast.makeText(getApplicationContext(), "已经加载完毕", Toast.LENGTH_LONG).show();
                 productListView.removeFooterView(footView);
                 isLoading = true;
             }
         }

         @Override
         protected void onCancelled(List<Product> result)
         {
             super.onCancelled(result);
         }
     }

2015.01.15(android AsyncTask)的更多相关文章

  1. Daily Scrumming* 2015.12.15(Day 7)

    一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1036 https://github.com/buaaclubs-team/temp-front/com ...

  2. 20155236 《Java程序设计》实验四(Android程序设计)实验报告

    20155236 <Java程序设计>实验四(Android程序设计)实验报告 一.实验内容及步骤 第24章:初识Android 任务一:完成Hello World, 要求修改res目录中 ...

  3. Appium-001-测试开发环境搭建(Android - Win7)

    随着移动端 App 测试自动化的兴起,为更好的控制产品质量,越来越多的中大型公司开始了移动端的自动化测试.Appium 自动化测试技术也是我很早之前就想学习的一门技术,却一直没有比较空余的时间来学习( ...

  4. React Native 轻松集成统计功能(Android 篇)

    关于推送的集成请参考这篇文章,本篇文章将引导你集成统计功能,只需要简单的三个步骤就可以集成统计功能. 第一步 安装 在你的项目路径下执行命令: npm install janalytics-react ...

  5. React Native 轻松集成分享功能(Android 篇)

    关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...

  6. 20145207《Java程序设计》实验四( Android程序设计)实验报告

    <Java 程序设计>实验四( Android程序设计)实验报告 目录 改变 Android开发基础实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.增加了 ...

  7. 20155310 《Java程序设计》实验四 (Android程序设计)实验报告

    20155310 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Andro ...

  8. 20155311 《Java程序设计》实验四 (Android程序设计)实验报告

    20155311 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ...

  9. 20155318 《Java程序设计》实验四 (Android程序设计)实验报告

    20155318 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ...

随机推荐

  1. java.lang.ClassCastException: java.lang.String cannot be cast to com.jy.hfims.domain 映射实体类型错误

    今天在做 excel导出的时候,出现了一个问题"java.lang.ClassCastException: java.lang.String cannot be cast to com.do ...

  2. HDU3348(贪心求硬币数

    ;} coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  3. 3D魔方游戏

    初学OpenGL时做的小程序,涉及到了OpenGL的大部分基本内容,如视图模型变换.色彩.纹理贴图.材质.光照.显示列表.选择等 三阶魔方有3×3×3个方块组成,每个方块的类当中都有一个4×4的矩阵, ...

  4. effective C#之 - 使用属性代替成员变量

    使用属性代替公共成员变量,一个很明显的好处是,很容易在一个地方对成员变量进行控制,例如: class Customer { private string name; public string Nam ...

  5. Spring-----4、使用Spring容器

    转载自:http://blog.csdn.net/hekewangzi/article/details/41349591

  6. google2013校园招聘笔试题(全国)

    google2013校园招聘笔试题 1. 单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少.关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝 ...

  7. 排查Linux机器是否已被入侵

    来自--马哥Linux运维 1.入侵者可能会删除机器的日志信息 ,可以查看日志信息是否存在后者被清除 [root@zklf-server02 ~]# ll -h /var/log/ total 3.4 ...

  8. 关于如何使用javascript监听滚动条滚动事件

    在网页中,通常有一个通往网页顶部的锚点,现在我们就来实现它 Html代码: <a id="scrollup" href="#top" style=&quo ...

  9. 【BZOJ4197】【Noi2015】寿司晚宴

    Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同 ...

  10. shell基础 -- grep、sed、awk命令简介

    在 shell 编程中,常需要处理文本,这里介绍几个文本处理命令. 一.grep 命令 grep 命令由来已久,用 grep 命令来查找 文本十分方便.在 POSIX 系统上,grep 可以在两种正则 ...