2015.01.15(android AsyncTask)
参考网址: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)的更多相关文章
- Daily Scrumming* 2015.12.15(Day 7)
一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1036 https://github.com/buaaclubs-team/temp-front/com ...
- 20155236 《Java程序设计》实验四(Android程序设计)实验报告
20155236 <Java程序设计>实验四(Android程序设计)实验报告 一.实验内容及步骤 第24章:初识Android 任务一:完成Hello World, 要求修改res目录中 ...
- Appium-001-测试开发环境搭建(Android - Win7)
随着移动端 App 测试自动化的兴起,为更好的控制产品质量,越来越多的中大型公司开始了移动端的自动化测试.Appium 自动化测试技术也是我很早之前就想学习的一门技术,却一直没有比较空余的时间来学习( ...
- React Native 轻松集成统计功能(Android 篇)
关于推送的集成请参考这篇文章,本篇文章将引导你集成统计功能,只需要简单的三个步骤就可以集成统计功能. 第一步 安装 在你的项目路径下执行命令: npm install janalytics-react ...
- React Native 轻松集成分享功能(Android 篇)
关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...
- 20145207《Java程序设计》实验四( Android程序设计)实验报告
<Java 程序设计>实验四( Android程序设计)实验报告 目录 改变 Android开发基础实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.增加了 ...
- 20155310 《Java程序设计》实验四 (Android程序设计)实验报告
20155310 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Andro ...
- 20155311 《Java程序设计》实验四 (Android程序设计)实验报告
20155311 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ...
- 20155318 《Java程序设计》实验四 (Android程序设计)实验报告
20155318 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ...
随机推荐
- Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
SQL> drop table test; 表已删除. SQL> create table test as select * from dba_objects where 1!=1; 表已 ...
- Java 使用jaxp添加节点
<?xml version="1.0" encoding="UTF-8"?> <person> <p1> <name& ...
- SHA-2 Certificate Signing Request
To request an SSL certificate is now a SHA-2 Certificate Signing Request (CSR) is required. Using th ...
- nodejs 入门
1. hello word hello.js console.log("hello"); node hello.js即可 2.调试 如果 npm install太慢 可以使用国内淘 ...
- 刷新本地的DNS缓存
用“WIN +R”快捷键打开运行窗口,输入“cmd”命令,进行命令行窗口.
- Swift实战-豆瓣电台(三)获取网络数据
观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...
- 当AS3遇见Swift(一)
当AS3遇见Swift 从Hello开始 As3 trace(“Hello Eko”) Swift println(“Hello Eko”) 挺象,有点隔壁王叔叔的意思. 常量和变量 As3 publ ...
- 入门训练 A+B问题
http://lx.lanqiao.org/problemset.page?code=BEGIN-&userid=34549 入门训练 A+B问题 时间限制:1.0s 内存限制:2 ...
- ACM之Java速成(1)
这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner cin = new Sc ...
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...