对于异步操作的原理我就不讲了。在这我着重讲怎么使用异步操作的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…();

那么整个流程就讲的差点儿相同了。喜欢的请点赞,评论。不喜勿喷。

最新文章

  1. Sigar使用
  2. unity3d加载默认工程秒退怎么办
  3. storm入门(一):storm编程框架与举例
  4. 在虚拟机中安装CentOS7
  5. Linux 积累
  6. S1 : 传递参数
  7. JSP 相关试题(一)
  8. 06_init()和destroy()方法
  9. wait(...) notify() notifyAll()
  10. python笔记之第一次使用(未入门)
  11. android DialogFragment 实现Dialog展示扫二维码图片展示
  12. ACM 第十一届 河南省省赛A题 计划日
  13. 怎样监听vue.js中v-for全部渲染完成?
  14. Linux系统上安装nodejs
  15. Confluence 6 Oracle 驱动输入你的数据库细节
  16. sql实时提交事务
  17. 日常英语---二、注册google的api的key
  18. 文件路径、File协议、FTP协议、Http协议之间简单的区别
  19. linux 学习的一些书单,对了解android 也有大用
  20. lambdas vs. method groups

热门文章

  1. 【BZOJ 1016】 1016: [JSOI2008]最小生成树计数 (DFS|矩阵树定理)
  2. JMS介绍:我对JMS的理解和认识
  3. [CF626F]Group Projects
  4. vagrant 常用命令以及常用操作
  5. [转] 关于Struts-JSON配置(详解带实例struts2的json数据支持)
  6. Codeforces Beta Round #5 A. Chat Server&#39;s Outgoing Traffic 水题
  7. acdream 1725 哗啦啦的小彭玉染色问题 离散化并查集
  8. 模型的性能评估(二) 用sklearn进行模型评估
  9. .apk文件的MIME类型
  10. 发现一个可以搜索常用rpm包的地址(http://www.rpmfind.net/)