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

首先你得覆盖它

    @Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stub}

然后你得触发它

publishProgress();

在你想要触发正在处理的地方添上即可,至于你在onProgressUpdate里面作什么,一般都是弹窗,我这里是用progressdialog提示正在载入,那么就是这种

    @Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stubpd = ProgressDialog.show(IndustrialPark_Activity.this, "提示信息","正在载入…");}

在doinbackground方法一開始就弹出正在载入

    protected List<GovernmentInstitutionBean> doInBackground(Void... arg0) {// TODO Auto-generated method stubtry {publishProgress();................}

那么这里要注意的是,假设载入成功的话就会跳到onpostexcute方法里面,假设载入失败的话呢。那么我们要让它跳到oncancelled方法里面,我们try catch一下doinbackground方法里面的处理,在catch里面加上

cancel(true);

这句代码,不管跳到哪都要记得你的pd还没消失呢。所以在两个方法里面都要写上让它消失的代码handler。sendmeesage…();

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

转载于:https://www.cnblogs.com/yfceshi/p/7294396.html

AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用相关推荐

  1. 【Android】AsyncTask异步类

    一.关于AysncTask AsyncTask使得多线程编程更加简单,AsyncTask能在后台线程执行异步任务,并且在UI线程更新界面,而不再需要用户去操作Thread和Handler.AysncT ...

  2. AsyncTask工作机制简介

    昨天写的图片的三级缓存,假设有兴趣,能够去看下,浅谈图片载入的三级缓存原理(一) http://blog.csdn.net/wuyinlei/article/details/50606455 在里面我 ...

  3. android AsyncTask 的分析与运用

    线程 在Android当中,通常将线程分为两种,一种叫做Main Thread,除了Main Thread之外的线程都可称为Worker Thread. 当一个应用程序运行的时候,Android操作系 ...

  4. AsyncTask 很好

    一.基础篇 1)UI线程概念 Android为单线程模型.当一个程序第一次启动时,Android会自动创建一个对应的主线程(Main Thread).它负责把事件分派到相应的控件,用于用户与Andro ...

  5. 多线程之 AsyncTask 使用详解和从源码中深入理解 AsyncTask 机制

    前言 AsyncTask是Android提供的一个助手类,它对Thread和Handler进行了封装,方便我们使用: Android之所以提供AsyncTask这个类,就是为了方便我们在后台线程中执行 ...

  6. Android攻城狮AsyncTask

    构建AsyncTack子类的参数 AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承AsyncTask需要指定如下三个泛型参数: para ...

  7. Android面试必备知识点总结

    本文原文(MarkDown)链接:https://github.com/DmrfCoder/interview/blob/master/Android/Android.md 文章目录 Android的 ...

  8. Android实现MQTT客户端

    java代码 package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import andr ...

  9. Android中 AsyncTask

    Android AsyncTask 在程序处理中必然会遇上耗时的操作,如访问网络,下载数据,访问数据库等,如何存在耗时的操作 又不能影响界面显示交互. 在某些耗时可以控制的情况下,我们可以分批操作,对 ...

最新文章

  1. Nginx+FastCGI运行原理
  2. 第十一届蓝桥杯大赛软件赛省赛 C/C++ 大学B组
  3. 【论文解读】解读TRPO论文,深度强化学习结合传统优化方法
  4. html布局基础,HTML 布局 - HTML 基础教程
  5. 荣耀Magic4 Pro延迟上市:全新一代LTPO超级四曲面屏加持
  6. python 3.6.5安装教程_Ubuntu16.04安装python3.6.5详细步骤
  7. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
  8. [msi]Cannot open database file. System error -2147287035
  9. 实现滑动分页(微博分页方式)
  10. 【爬虫】selenium动态页面请求与模拟登录知乎
  11. 初识Memcache之安装与测试
  12. 麒麟V10系统密码策略修改
  13. 利用git进行word文档的版本管理
  14. Unity用代码将多张图片合并为一张图片
  15. IDEA中Python使用url时报错:Traceback (most recent call last)
  16. MongoDB:常见的面试题和答案
  17. BT下载伤硬盘的解决办法
  18. 使用BAT脚本批量修改文件名的方法
  19. Spark之spark VS MR
  20. 数据库插入大量数据时不要忘记先删除索引(小技巧)

热门文章

  1. ClientAbortException 异常
  2. 【转】left join 和 left outer join 的区别
  3. 利用Lucene.net搭建站内搜索(3)---创建索引
  4. android builder布局方式,android – AlertDialog.Builder与自定义布局和EditText;无法访问视图...
  5. 循环练习题:小球下落
  6. python学习方法_十二种学习Python的方法
  7. 业务分析岗所需具备的技能_成功的业务分析师需要具备的3种技能
  8. jsoup爬虫技术精通_精通业务的同时保持技术的3种方法
  9. github开源项目_GitHub项目分析,3D打印义肢和更多开源新闻
  10. duckduckgo 国内_DuckDuckGo的Instant Answers项目的7课