自定义异步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("");

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

AsyncTask解析(下)——实现自定义AsyncTask网络传输工具类封装

在上文:AsyncTask深度解析(上)——原理分析与超简单demo实现中已经对AsyncTask的实现原理以及源码流程进行了一定的分析,相信大家已经基本熟悉了AsyncTask内部实现网络传输的调用...

自定义异步AsyncTask

在 网络 的获取数据的过程中,多线程,异步 是很常见的方法,在这儿,我介绍一些处理办法1,Thread Thread的使用,一般结合 Handler的使用, 所以的操作,耗时操作,放在Thread...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

AsyncTask异步

AsyncTask异步

android异步AsyncTask

今天突然用到异步了,很久不用都忘了, 1、AsyncTask是抽象类.AsyncTask定义了三种泛型类型的参数,Params,Progress和Result。 Params 启动任务执行的输入参数...

android AsyncTask异步

在android中实现异步任务机制的有两种方式:Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面...

AsyncTask解析

AsyncTask解析AsyncTask原理简介 AsyncTask通过Handler实现异步消息处理。 AsyncTask是一个抽象类,使用的时候必须要实现抽象方法doInBackground(Pa...

9、实现自定义AsyncTask

一、自定义AsyncTask。package com.example.asynctask;import java.util.ArrayDeque; import java.util.concurren...

自定义异常

/* sun提供了很多的异常类给我们用于描述程序中各种的不正常情况,但是sun 给 我提供异常类还不足以描述我们现实生活中所有不正常情况,那么这时候我们就 需要自定义异常类。需求: 模拟feiQ上线的...

自定义异常类

自定义异常类 步骤:自定义一个类继承Exception即可。 /*** Author:Liu Zhiyong* Version:Version_1* Date:2016年6月22日11:54:...

AsyncTask的使用方法(异步任务的处理)

一、AsyncTask介绍: Android的AsyncTask比Handler更轻量级,适用于简单的异步处理。 Handler和AsyncTask都是为了不阻塞主线程(UI线程),且UI的更新只...
  • redoq
  • redoq
  • 2016-10-10 15:10
  • 82
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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