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

  1. /*
  2. * Params 启动任务执行的输入参数,比如HTTP请求的URL。
  3. * Progress 后台任务执行的百分比。
  4. * Result 后台执行任务最终返回的结果,比如String
  5. *
  6. * doInBackground(Params…) :后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。
  7. * 此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。
  8. * 在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。
  9. * onPostExecute(Result) :相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。
  10. * 此方法在主线程执行,任务执行的结果作为此方法的参数返回
  11. *
  12. * 有必要的话你还得重写以下这三个方法,但不是必须的:
  13. * onProgressUpdate(Progress…) 可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。
  14. * onPreExecute() 这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
  15. * onCancelled() 用户调用取消时,要做的操作
  16. */
  17. public class MyAsyncTask extends AsyncTask<String, Integer, List<Product>>
  18. {
  19. @Override
  20. protected void onPreExecute()
  21. {
  22. Toast.makeText(getApplicationContext(), "开始加载", Toast.LENGTH_SHORT).show();
  23. super.onPreExecute();
  24. }
  25.  
  26. // * 后台运行耗时操作,不能直接操作主UI线程里面的数据,通过函数publishProgress和onProgressUpdate间接操作主UI线程里面的数据
  27. @Override
  28. protected List<Product> doInBackground(String... params)
  29. {
  30. // 获取产品列表,不能操作主UI线程内的数据
  31. List<Product> temProducts = new GetProductService().getProduct(page);
  32. // for( Integer i = 0; i < 3; ++i )
  33. // {
  34. // publishProgress(i); // 通过调用该函数通知 onProgressUpdate并且在onProgressUpdate中可以修改UI主线程中的参数
  35. // }
  36. return temProducts;
  37. }
  38.  
  39. // * 子线程中调用publishProgress函数通知此函数操作主UI线程中的数据(主要是进度条数据)
  40. @Override
  41. protected void onProgressUpdate(Integer... values)
  42. {
  43. int vlaue = values[0]; // 获取主线程中调用 publisProgress 传递过来的进度值
  44. Toast.makeText(getApplicationContext(), "加载进度:" + vlaue, Toast.LENGTH_LONG).show();
  45. super.onProgressUpdate(values);
  46. }
  47.  
  48. // 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。此方法在主线程执行,任务执行的结果作为此方法的参数返回
  49. // 这里的product参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)
  50. // 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
  51. @Override
  52. protected void onPostExecute(List<Product> product)
  53. {
  54. Toast.makeText(getApplicationContext(), "加载完毕", Toast.LENGTH_LONG).show();
  55. ListUtil.products = products; // 获取产品列表对象
  56. isLoading = false; // 设置加载标志状态位:加载完毕
  57.  
  58. adapter.setProducts(product);
  59. adapter.notifyDataSetChanged();
  60. if( product.size() == 0 )
  61. {
  62. Toast.makeText(getApplicationContext(), "已经加载完毕", Toast.LENGTH_LONG).show();
  63. productListView.removeFooterView(footView);
  64. isLoading = true;
  65. }
  66. }
  67.  
  68. @Override
  69. protected void onCancelled(List<Product> result)
  70. {
  71. super.onCancelled(result);
  72. }
  73. }

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. LeetCode Flip Game

    原题链接在这里:https://leetcode.com/problems/flip-game/ 题目: You are playing the following Flip Game with yo ...

  2. 实践JAVA wait(), notify(),sleep方法--一道多线程的面试题

    建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC. 这个问题用Object的wait(),notify()就可以很方便的解决. publ ...

  3. Ext4.0 获取选中行及遍历

    var grid= Ext.getCmp('grid'); var records=grid.getSelectionModel().getSelection(); if(records!=null& ...

  4. Spring第13篇—–Spring整合Hibernate之声明式事务管理

    不容置疑的我们可以知道Spring的事务管理是通过AOP(AOP把我们的事务管理织入到我们的业务逻辑里面了)的方式来实现的,因为事务方面的代码与spring的绑定并以一种样板式结构使用.(面向切面编程 ...

  5. 第四篇 SQL Server安全权限

    本篇文章是SQL Server安全系列的第四篇,详细内容请参考原文. 权限授予主体访问对象,以执行某些操作.SQL Server有大量你可以授予给主体的权限,你甚至可以拒绝或回收权限.这听起来有点复杂 ...

  6. TXT导入出现乱码

    错误#1 11:15 2012-12-19客户提供一txt文本文件,要求导入到数据库,选用dts导入工具,选择数据源步骤如下列预览时出现乱码解答#1 双击打开原始文件中文显示正常,将其另存为选择编码为 ...

  7. 无线AP_H3C WA2620i-AGN配置

    设置Console口登录AP设备的用户进行密码认证: <Sysname> system-view //进入系统视图 [WA2620i-AGN]user-interface console ...

  8. 安装Cocoapods(Pods 管理iOS 第三方库)

    安装 可先检测Mac电脑是否安装Pods.打开控制台: $ which pod 如果安装,结果如下;如果没有安装,控制台无反应. /usr/bin/pod 如果没有安装, 以下命令安装之. $ sud ...

  9. python urllib2 Basic认证

    1.通过添加http header 来实现 import urllib2 from base64 import encodestring url = 'http://202.108.1.51' use ...

  10. java 笔记(4) —— java I/O 流、字节流、字符流

    Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节.JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据 ...