自定义异步AsyncTask
2016-05-30 21:07
423 查看
在 网络 的获取数据的过程中,多线程,异步 是很常见的方法,在这儿,我介绍一些处理办法
1,Thread
Thread的使用,一般结合 Handler的使用,
所以的操作,耗时操作,放在Thread里面进行,
2,AsyncTask
这儿不做多介绍,AsyncTask的简单使用,我的其他博客有具体的介绍;
自定义的AsyncTask
NODO:
1,一定要传递上下文(Context)进来。
2,根据自己的需求,进行泛型操作。
3,下面的完整版,要使用final修饰。类似与Thread.start方法 由于final修饰,无法Override,方法重命名 省略掉网络判断
使用,
1,Thread
Thread的使用,一般结合 Handler的使用,
所以的操作,耗时操作,放在Thread里面进行,
2,AsyncTask
AsyncTask定义了三种泛型类型 Params,Progress和Result。 Params 启动任务执行的输入参数,比如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源码分析
- Android中异步类AsyncTask用法总结
- Android中AsyncTask的用法实例分享
- Android的异步任务AsyncTask详解
- Android使用AsyncTask实现多线程下载的方法
- 简介Android 中的AsyncTask
- Android AsyncTask完全解析 带你从源码的角度彻底理解
- Android 中使用 AsyncTask 异步读取网络图片
- Android中通过AsyncTask类来制作炫酷进度条的实例教程
- Android中AsyncTask异步任务使用详细实例(一)
- asynctask的用法详解
- Android中AsyncTask详细介绍
- Android中AsyncTask与handler用法实例分析
- Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)
- 详解Android App中的AsyncTask异步任务执行方式
- Android开发笔记之:AsyncTask的应用详解
- android教程之使用asynctask在后台运行耗时任务
- 详解Android中用于线程处理的AsyncTask类的用法及源码
- 详解Android中AsyncTask机制
- 线程池三:AsyncTask线程池