码迷,mamicode.com
首页 > 其他好文 > 详细

AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用

时间:2015-08-19 09:28:52      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:asynctask   异步   线程   doinbackgr   onpostexcu   

对于异步操作的原理我就不讲了,在这我着重讲怎么使用异步操作的doinbackground onProgressUpdate onCancelled onPostExecute这四个方法

doinbackground 我的理解效果相当于Thread里面的run,这样理解就容易多了,因为大家可能对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 就是在你正在进行异步操作的时候提示用户你正在操作,让你的应用体验更加好,那么这个方法的使用也很简单

首先你得覆盖它

    @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的基本使用

标签:asynctask   异步   线程   doinbackgr   onpostexcu   

原文地址:http://blog.csdn.net/a4384142/article/details/47775499

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!