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.组 ...
随机推荐
- ucenter 显示通信成功的条件
应用的主 URL+/api/uc.php?code= 如果这个页面返回1,则通信成功,也就是说,uc.php是通信成功里重要的一环 事实上,我还没有通信成功,我只是写了一个1在欺骗服务端
- Linux 技巧:让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...
- mysql -B 恢复与不加
-B 跟--database 意义一样 在默认不指定库时候 连续名称,只有第一个名称为库名,后面的都为表名 而使用 -B 或者 --database 之后 所有的名 都是库名 1 导出单个库时候加了- ...
- wContour
一个等高线生成类库,很强大,C#的,不过源码好像不公开,可以直接使用Dll.在气象领域用的比较多.
- 判断UpLoader是否安装了Flash
var flashVersion = (function() { var version; try { version ...
- ACM之Java速成(4)
ACM中Java.进制转换 Java进制转换: 由于Unicode兼容ASCII(0-255),因此,上面得到的Unicode就是ASCII. java中进行二进制,八进制,十六进制,十进制间进行相互 ...
- [转]有哪些值得关注的技术博客(Java篇)
有哪些值得关注的技术博客(Java篇) 大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...
- Java基础(44):ArrayList使用详解
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: a.动态的增加和减少元素 b.实现了IColle ...
- 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...
- Spring 中的 Bean 配置
内容提要 •IOC & DI 概述 •配置 bean –配置形式:基于 XML 文件的方式:基于注解的方式 –Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & ...