Volley封装
在Application初始化 Volley queues=Volley.newRequestQueue(appContext);
并返回RequestQueue 对象
public static RequestQueue getHttpQueues(){
return queues;
}
import android.content.Context; import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
importpublic abstract class VolleyInterface {
public Context context;
public static Listener<ResultModel> mListener;
public static ErrorListener mErrorListener; public VolleyInterface(Context context,Listener<ResultModel> lisener,ErrorListener errorLisener){
this.context=context;
mListener=lisener;
mErrorListener=errorLisener;
} public Listener<ResultModel> loadingListener(){
mListener=new Listener<ResultModel>() { @Override
public void onResponse(ResultModel resultModel) {
onMySuccess(resultModel);
}
};
return mListener;
} public ErrorListener errorListener(){
mErrorListener=new ErrorListener() { @Override
public void onErrorResponse(VolleyError volleyError) {
OnMyError(volleyError);
}
};
return mErrorListener;
} public abstract void onMySuccess(ResultModel resultModel);
public abstract void OnMyError(VolleyError volleyError); }
VolleyRequest类
import java.util.Map; import android.content.Context; import com.android.volley.Request.Method;
importimportpublic class VolleyRequest {
private static FastJsonRequest<ResultModel> fastJsonRequest;
public static Context context;
public static void RequestGet(Context mContext,String url,String tag,VolleyInterface vif){
FandDaApplication.getHttpQueues().cancelAll(tag);
fastJsonRequest=new FastJsonRequest<ResultModel>(url, ResultModel.class, vif.loadingListener(), vif.errorListener());
fastJsonRequest.setTag(tag);
FandDaApplication.getHttpQueues().add(fastJsonRequest);
//调用会引发com.android.volley.NoConnectionError: java.io.InterruptedIOException错误,原因是volley已经调用过了
//FandDaApplication.getHttpQueues().start();
} public static void RequestPost(Context context,String url,Map<String,String> map,String tag,VolleyInterface vif){
FandDaApplication.getHttpQueues().cancelAll(tag);
fastJsonRequest=new FastJsonRequest<ResultModel>(Method.POST,url, ResultModel.class, map,vif.loadingListener(), vif.errorListener());
fastJsonRequest.setTag(tag);
FandDaApplication.getHttpQueues().add(fastJsonRequest);
//调用会引发com.android.volley.NoConnectionError: java.io.InterruptedIOException错误,原因是volley已经调用过了
//FandDaApplication.getHttpQueues().start();
} }
使用方式
String url=new BroadcastAPI().getBroadcastList(0,"",0,"",page,pageSize);
VolleyRequest.RequestGet(context, url, "NEWINVILIST",
new VolleyInterface(context,VolleyInterface.mListener,VolleyInterface.mErrorListener) {
@Override
public void onMySuccess(ResultModel resultModel) {
if(ResultApi.isCode(resultModel)){
list =JSON.parseArray(resultModel.getResult().toString(), BroadcastDetailsModel.class);
//如果用户刷新数据则清空原来缓存记录,为了保证数据统一性
BroadcastTable.getInstance(context).deleteAllData(BroadcastTable.newNumber);
if (mType == 1) {
adapter.addItemTop(list);
} else {
adapter.addItemLast(list);
}
BroadcastTable.getInstance(context).saveBroadcastList(list,BroadcastTable.newNumber);
}else{
if(mType==1){
ToastUtil.show(context, getString(R.string.toast_empty_data));
}else{
ToastUtil.show(context, getString(R.string.toast_next_empty));
}
}
mSwipeRefreshWidget.setRefreshing(false);
} @Override
public void OnMyError(VolleyError volleyError) {
ToastUtil.show(context, volleyError.getMessage());
mSwipeRefreshWidget.setRefreshing(false);
}
});
public class ResultModel {
private int code;
private String msg;
private Object result;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
Volley封装的更多相关文章
- 利用Volley封装好的图片缓存处理加载图片
Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存.这个类能够缓存文件到磁盘的指定目录.但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC b ...
- Volley源码分析(五)Volley源码总结篇
volley关键的代码这里已经分析完了,下面梳理一下完整的Volley流程 Volley的使用从构造Request对象开始,Volley默认提供了四种request的实现,StringRequest, ...
- Rx-Volley 自己来封装
自从15年接触了RxJava,对函数式编程越发的喜爱.以前Android项目上网络层都是统一的使用Volley,已经对网络请求的回调,多个回调嵌入各种不爽了,趁着年前任务轻松,赶紧的将Volley封装 ...
- 【Android】《App研发录》总结
说明 看这本书的时候,总感觉怪怪的. 因为在地铁上看完的,作者书中基本都是他自己工作中遇到的问题和坑,虽说这样会让人感觉找到了解决方案,可以再进行深入的研究,可是某些地方介绍的有点片面,仅仅是引用部分 ...
- Retrofit2 源码解析
原文链接:http://bxbxbai.github.io/2015/12/13/retrofit2-analysis/ 公司里最近做的项目中网络框架用的就是Retrofit,用的多了以后觉得这个框架 ...
- Android 网络请求库volley的封装,让请求更方便
首先封装一下volley 请求 public class CustomRequest extends StringRequest { private static final String TAG = ...
- volley二次封装
产品中使用Volley框架已有多时,本身已有良好封装的Volley确实给程序开发带来了很多便利与快捷.但随着产品功能的不断增加,服务器接口的不断复杂化,直接使用Volley原生的JSONObjectR ...
- Volley自定义Request及使用单例封装RequestQueue
一.自定义Request Volley的所有的请求的超类型是Resuest,所有我们常用的请求都是这个类的子类,那么我们自定义View肯定也是基于这个类的. 案例: package com.zhy.v ...
- 转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)
http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一 ...
随机推荐
- 实现tail
编程之路刚刚开始,错误难免,希望大家能够指出. 自己实现一个tail的功能(使用IO系统调用),完全类似的操作步骤就不实现了,主要是让自己加深了解. 下面的代码不足之处很多,以后有空改正. #incl ...
- 【HAOI2016】放旗子
终于自己推出来一道题了quq然而时间有点久,考场上并不大丈夫……原题: 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- set集合的遍历(基于迭代器和增强for循环,没有一般的for循环)
赋:开发项目中见到的代码 Java中Set集合是一个不包含重复元素的Collection,首先我们先看看遍历方法 package com.sort; import java.util.HashSet; ...
- Optimizing Docker Images for Rust Projects
转自:http://whitfin.io/speeding-up-rust-docker-builds/ This post will be the first of several addressi ...
- 随机重拍与抽样(random_shuffle,random_sample,random_sample_n)
//版本一:使用内部的随机数生成器 template<class RandomAccessIterator> void random_shuffle( RandomAccessIterat ...
- 一个 CPU 核 开多少个 线程 比较合适 ?
一个 CPU 核 开多少个 线程 比较合适 ? 这是一个 线程池 的 问题 . 我之前也 反对 过 线程池, 因为我认为 线程池 影响了 对 用户 的 实时响应性 . 我也认为, 分时 (对 CPU ...
- centos安装netcat
Linux安装swoole后,测试UDP服务需要用到netcat,然而百度了很多安装方法,并没有一个好用的.几经尝试,终于安装成功,现在就分享给大家,以供参考. 配置环境:centos6.3 1.下载 ...
- vim使用技巧大全
1.vim清空内容 光标移到第一行,然后在非插入模式按10000后然后点dd .要嫌笨的话就在非插入模式下输入:.,$d 一回车就全没了 2.vim光标跳转操作 1.跳到文本的最后一行:按“G”,即“ ...
- 大数据离线分析平台 JSSDK数据收集引擎编写
JsSDK设计规则在js sdk中我们需要收集launch.pageview.chargeRequest和eventDuration四种数据,所以我们需要在js中写入四个方法来分别收集这些数据,另外我 ...
- 【java】对象赋值给另一个对象
对基本数据类型的赋值很简单的.基本类型存储了实际的数值,而并非指向一个对象的引用,所以在赋值的时候,是直接将一个地方的内容复制到另一个地方.对于a=b,修改b后并不会影响到a,这正是我们大多数情况下所 ...