AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用
对于异步操作的原理我就不讲了。在这我着重讲怎么使用异步操作的doinbackground onProgressUpdate onCancelled onPostExecute这四个方法
doinbackground 我的理解效果相当于Thread里面的run。这样理解就easy多了,由于大家可能对Thread都非常熟悉,你能够把你想要首先处理的事物放在这里,可是有非常多人就会在这里更新ui操作。这是不能够的 ,要更新ui操作我们就要讲到onPostExecute这种方法啦
onPostExecute我们把它先override 出来看看他的结构
@Override
protected void onPostExecute(List<GovernmentInstitutionBean> result) {}
我们能够看到方法里面有一个result參数,类型是自定义的,那么这个result是从哪里传来的呢,没错了,通过doinbackground处理将结果返回给
onPostExecute方法result接收。在这种方法里面更新ui操作。List这个类型也不是凭空而来。而是在doinbackground方法里面也要设置
首先你得把方法的返回类型改一下
protected List<GovernmentInstitutionBean> doInBackground(Void... arg0) {
然后你得把类的參数改一下
class Task1 extends AsyncTask<Void, Void, List<GovernmentInstitutionBean>>
在doinbackground方法里面有个return 把你想要返回的数据return
override onPostExecute方法自然就能接收到了
说到这里你应该会简单的使用异步操作了,假设你还想要对它更细化的控制。异常的处理那么 onProgressUpdate onCancelled 这两个方法就呼吁而出了
onProgressUpdate 就是在你正在进行异步操作的时候提示用户你正在操作,让你的应用体验更加好,那么这种方法的使用也非常easy
首先你得覆盖它
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
}
然后你得触发它
publishProgress();
在你想要触发正在处理的地方添上即可,至于你在onProgressUpdate里面作什么,一般都是弹窗,我这里是用progressdialog提示正在载入,那么就是这种
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
pd = ProgressDialog.show(IndustrialPark_Activity.this, "提示信息",
"正在载入…");
}
在doinbackground方法一開始就弹出正在载入
protected List<GovernmentInstitutionBean> doInBackground(Void... arg0) {
// TODO Auto-generated method stub
try {
publishProgress();
.....
.....
......
}
那么这里要注意的是,假设载入成功的话就会跳到onpostexcute方法里面,假设载入失败的话呢。那么我们要让它跳到oncancelled方法里面,我们try catch一下doinbackground方法里面的处理,在catch里面加上
cancel(true);
这句代码,不管跳到哪都要记得你的pd还没消失呢。所以在两个方法里面都要写上让它消失的代码handler。sendmeesage…();
那么整个流程就讲的差点儿相同了。喜欢的请点赞,评论。不喜勿喷。
AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用的更多相关文章
- Android AsyncTask运作原理和源码分析
自10年大量看源码后,很少看了,抽时间把最新的源码看看! public abstract class AsyncTask<Params, Progress, Result> { p ...
- Android AsyncTask 源码解析
1. 官方介绍 public abstract class AsyncTask extends Object java.lang.Object ↳ android.os.AsyncTask&l ...
- Android开发之异步具体解释(二)之AsyncTask
请尊重他人的劳动成果,转载请注明出处:Android开发之异步具体解释(二)之AsyncTask http://blog.csdn.net/fengyuzhengfan/article/details ...
- AsyncTask工作机制简介
昨天写的图片的三级缓存,假设有兴趣,能够去看下,浅谈图片载入的三级缓存原理(一) http://blog.csdn.net/wuyinlei/article/details/50606455 在里面我 ...
- Android中AsyncTask使用具体解释
在Android中我们能够通过Thread+Handler实现多线程通信.一种经典的使用场景是:在新线程中进行耗时操作.当任务完毕后通过Handler向主线程发送Message.这样主线程的Handl ...
- 并发编程之Android中AsyncTask使用详解(四)
更多Android高级架构进阶视频免费学习请点击:[https://space.bilibili.com/474380680] 在Android中我们可以通过Thread+Handler实现多线程通信 ...
- Android应用开发学习笔记之AsyncTask
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在上一篇文章中我们学习了多线程和Handler消息处理机制,如果有计算量比较大的任务,可以创建一个新线程执行计算工作 ...
- (Android) Download Images by AsyncTask API
1. Check network status AndroidManifest.xml <uses-sdk> ... </> <uses-permission andro ...
- 用AsyncTask实现多线程
前言 在Android应用开发中,有时我们需要实现任务的同步.Android里的AsyncTask类可以帮我们更好地管理线程同步(异步方式),就像Thread类能做的,不过用法比Thread更简单. ...
随机推荐
- HDU2874【倍增、ST】
题目链接[https://vjudge.net/problem/HDU-2874] 题意: 输入一个森林,总节点不超过N(N<10000),由C次询问(C<1000000),每次询问两个点 ...
- BZOJ3881 Coci2015 Divljak fail树+差分
题目大意,给出两个字符串集合S和T,向T中添加字符串,查询S_i在T中有几个字符串出现过.一看这种多字符串匹配问题,我们联想到了AC自动机,做法就是,对于S集合我们建立一个AC自动机,建出fail树, ...
- HDU 3404 Switch lights 博弈论 nim积
http://acm.hdu.edu.cn/showproblem.php?pid=3404 题目 http://www.doc88.com/p-5098170314707.html 论文 nim积在 ...
- JZYZOJ1525 HAOI2012道路 堆优化的dijkstra+pair
From Tyvj Guest ☆[haoi2012]道路 描述 Description C国有n座城市,城市之间通过m条单向道路连接.一条路径被称为最短路,当 ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E. Bear and Forgotten Tree 2 bfs set 反图的生成树
E. Bear and Forgotten Tree 2 题目连接: http://www.codeforces.com/contest/653/problem/E Description A tre ...
- URL资源跨域访问 跨域使用session信息
SilverLight 出于对安全性的考虑默认情况下对URL的访问进行了严格的限制,只允许访问同一子域下的URL资源. 下表列出了Silverlight 2.0 中 URL 访问规则: WebCl ...
- ext:grid分页,列宽度自动填满grid宽度
var cm = new Ext.grid.ColumnModel([{ header : '编号', dataIndex : 'id' }, { header ...
- Transistor latch improves on/off circuitry
Figure 1 shows an example of on/off circuitry commonly used in battery-operated devices. The p-chann ...
- Spring过滤器组件自动扫描
在这个Spring自动组件扫描的教程,您已经了解如何使Spring自动扫描您的组件.在这篇文章中,我们将展示如何使用组件过滤器自动扫描过程. 1.过滤组件 - 包含 参见下面的例子中使用Spring ...
- java Integer包装类装箱的一个细节
原文:https://www.cnblogs.com/JackPn/p/9392145.html java有八个基本数据类型,每个都有对应的一个包装类,比如int对应的Integer.从jdk1.5开 ...