自定义异步AsyncTask

原创 2016年05月30日 21:07:05

在 网络 的获取数据的过程中,多线程,异步 是很常见的方法,在这儿,我介绍一些处理办法

1,Thread
Thread的使用,一般结合 Handler的使用,
所以的操作,耗时操作,放在Thread里面进行,

2,AsyncTask

AsyncTask定义了三种泛型类型 Params,Progress和ResultParams 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String.
doInBackground:必须重写,异步执行后台线程要完成的任务,耗时操作将在此方法中完成.

onPreExecute:执行后台耗时操作前被调用,通常用于进行初始化操作.

onPostExecute:当doInBackground方法完成后,系统将自动调用此方
法,并将doInBackground方法返回的值传入此方法.通过此方法进行UI的更新.

onProgressUpdate:当在doInBackground方法中调用publishProgress方法更新任务执行进度后,将调用此方法
.通过此方法我们可以知晓任务的完成进度.

这儿不做多介绍,AsyncTask的简单使用,我的其他博客有具体的介绍;

自定义的AsyncTask

public abstract class MyHttpAsyncTask<Params, Result>

        extends AsyncTask<Params, Void, Result> {

    Context context;
    /**
     * 传递上下文的使用。
     * @param context
     */
    public MyHttpAsyncTask(Context context) {
        this.context = context;
    }

    public final AsyncTask<Params, Void, Result> executeProxy(
            Params... params) {

        return null;
    }
}

NODO:
1,一定要传递上下文(Context)进来。
2,根据自己的需求,进行泛型操作。
3,下面的完整版,要使用final修饰。类似与Thread.start方法 由于final修饰,无法Override,方法重命名 省略掉网络判断

public abstract class MyHttpAsyncTask<Params, Result>

        extends AsyncTask<Params, Void, Result> {

    Context context;
    /**
     * 传递上下文的使用。
     * @param context
     */
    public MyHttpAsyncTask(Context context) {
        this.context = context;
    }

    public final AsyncTask<Params, Void, Result> executeProxy(
            Params... params) {
        if (NetUtil.checkNetWork(context)) {
            return super.execute(params);
        } else {
            PromptManager.showNoNetWork(context);
        }
        return null;
    }
}

使用,

 new MyHttpAsyncTask<String,List<NewInfo>>(this){


            @Override
            protected List<NewInfo> doInBackground(String... params) {
                newInfoList = newsNet.getNewsFromInternet();
                return newInfoList;
            }

            @Override
            protected void onPostExecute(List<NewInfo> newInfos) {
                list_news_item = newInfos;
                LogUtils.Logi("AnyscTask","xxxxx  ok  ok  ok");
                news_xiyan.setAdapter(new NewsListAdapter());
                super.onPostExecute(newInfos);
            }
        }.executeProxy("");

Android之异步任务AsyncTask解析Json数据

异步任务AsyncTask解析Json数据
  • ly_rose
  • ly_rose
  • 2015年12月13日 21:59
  • 1384

多次调用异步任务(AsyncTask)时出现的问题

最近在做一个项目,在一个Activity中多次调用AsyncTask时出现了问题
  • matteozuo
  • matteozuo
  • 2014年10月24日 11:00
  • 2538

Android异步加载AsyncTask详解

最近项目发现个重大问题,结果打log跟踪查是AsyncTask导致的。如果对AsyncTask了解的不够深入透彻,那写代码就是埋雷。以后不定在哪个时间爆炸。首先我们要了解,谷歌为什么发明AsyncTa...
  • wdaming1986
  • wdaming1986
  • 2014年11月05日 20:03
  • 14980

(原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化

  • 2016年07月20日 09:18
  • 12.69MB
  • 下载

AsyncTask,自定义图片下载

本人小白,记录的都是自己按照网上写的小demo,忘得快,所以要记录下来,以后也要坚持。 总的来说跟网上没多少变化,就自定义了下载地址,返回Bitmap对象显示到imageView上 1、布局act...
  • qq_25108967
  • qq_25108967
  • 2018年01月02日 15:41
  • 21

使用AsyncTask 自定义加载图片(接口回调)

package com.example.viewpagerbanner.utils;import android.graphics.Bitmap; import android.graphics.Bi...
  • w1186859682
  • w1186859682
  • 2017年05月03日 15:03
  • 102

(原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)

前言: 以前看了些关于图片优化处理缓存比较全的视频(感谢慕风网),现在回顾觉得还是挺好的也就总结出来下,感觉针对图片做处理这块还真的用的比较多,本文章只要使用异步线程AsyncTask、ImageLo...
  • lnn368
  • lnn368
  • 2016年07月14日 11:04
  • 650

Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

前言:由于最近在做SDK的功能,需要设计线程池。看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到...
  • zhaoyanjun6
  • zhaoyanjun6
  • 2017年05月16日 14:45
  • 302

Android自定义圆形进度条,结合AsyncTask下载显示进度

效果图: 0.为了圆形进度条的扩展性,将部分属性定义在attrs.xml中,有利于定制化 ...
  • xingxtao
  • xingxtao
  • 2016年04月23日 15:22
  • 406

jQuery异步获取QQ在线状态并自定义QQ在线状态图片

  • 2015年08月05日 17:12
  • 44KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义异步AsyncTask
举报原因:
原因补充:

(最多只允许输入30个字)