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…();

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

时间: 2024-10-13 11:14:37

AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用的相关文章

源码分析--AsyncTask

查看文档 AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers. AsyncTask使适当的和易用的用户界面线程.这个类允许执行后台操作,在UI线程上发布的结果

Android AsyncTask 源码解析

1. 官方介绍 public abstract class AsyncTask extends Object  java.lang.Object    ? android.os.AsyncTask<Params, Progress, Result> AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish resul

Android中AsyncTask使用具体解释

在Android中我们能够通过Thread+Handler实现多线程通信.一种经典的使用场景是:在新线程中进行耗时操作.当任务完毕后通过Handler向主线程发送Message.这样主线程的Handler在收到该Message之后就能够进行更新UI的操作.上述场景中须要分别在Thread和Handler中编写代码逻辑,为了使得代码更加统一,我们能够使用AsyncTask类. AsyncTask是Android提供的一个助手类,它对Thread和Handler进行了封装,方便我们使用. Andro

Android开发之异步详解(二)之AsyncTask

请尊重他人的劳动成果,转载请注明出处:Android开发之异步详解(二)之AsyncTask http://blog.csdn.net/fengyuzhengfan/article/details/40212745 我曾在<Android开发之异步详解(一)之Thread+Handler>一文中介绍过通过Thread+Handler实现异步操作.感兴趣的朋友可以看一下. 虽然Thread+Handler可以实现更新主线程的UI并实现异步,但Thread+Handler模式需要为每一个任务创建一

AsyncTask源码翻译

前言: /** AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers. 译文:AsyncTask的正确实现,易于使用的用户界面线程.此类允许执行后台操作并把结果

Android项目----AsyncTask异步操作

public abstract class AsyncTask extends Object java.lang.Object    ? android.os.AsyncTask<Params, Progress, Result> Class Overview AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish

android异步请求asyncTask使用—分析getResponseCode()阻塞

在实际应用中经常会遇到比较耗时任务的处理,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的假死现象,Android中可以使用AsyncTask和Handler两种异步方式来解决这种问题. AsyncTask(异步任务处理) 在使用AsyncTask时处理类需要继承AsyncTask,提供三个泛型参数,并且重载AsyncTask的四个方法(至少重载一个). An asynchronous task is defined by a computation t

Android英文文档翻译系列(3)——AsyncTask

AsyncTask——异步任务 个人认为这是翻译比较好的一次.. Class Overview//类概述 AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

用AsyncTask实现多线程

前言 在Android应用开发中,有时我们需要实现任务的同步.Android里的AsyncTask类可以帮我们更好地管理线程同步(异步方式),就像Thread类能做的,不过用法比Thread更简单. 这篇博文包含以下两个部分: 1.AsyncTask介绍 2.实例 一. AsyncTask介绍 在你开发Android应用程序时,如果在一个Activity里有一个耗时任务(通常是一个子线程),并且这个任务调用/操作了主线程,应用就会抛出著名的"ANR" (Application Not