android volley 下载-android volley框架 2017 官方版 - 河东下载站

河东软件园:绿色免费的软件下载站! 最新软件|软件分类|软件专题|软件发布

所在位置:首页 > 应用软件 > 其它应用 > android volley框架 2017 官方版

android volley框架

 2017 官方版
  • 软件大小:302 KB
  • 更新日期:2017-03-18
  • 软件语言:简体中文
  • 软件类别:其它应用
  • 软件授权:免费软件
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

9.1
软件评分

本地下载文件大小:302 KB 高速下载需下载高速下载器,提速50%

软件介绍人气软件相关文章网友评论下载地址

为您推荐:其它应用

  android volley是款这进行android开发的时候,必须要进行使用的或者是不可或缺的重要框架;如果您想要进行快速的开发或者方便快捷的使用,就需要使用这款android volley框架了,这款软件的操作非常的简单,使用方便,是款非常值得信赖的软件,需要的朋友赶快将软件android volley框架下载来进行使用试试吧,相信您一定不会后悔的!

android volley框架 2017 官方版

软件功能

  自动调度网络请求;

  高并发网络连接;

  通过标准的 HTTP cache coherence(高速缓存一致性)缓存磁盘和内存透明的响应;

  支持指定请求的优先级;

  网络请求cancel机制。我们可以取消单个请求,或者指定取消请求队列中的一个区域;

  框架容易被定制,例如,定制重试或者回退功能;

  包含了调试与追踪工具;

  Volley 不适合用来下载大的数据文件。因为 Volley 会保持在解析的过程中所有的响应。对于下载大量的数据操作,请考虑使用 DownloadManager。

软件特色

  Volley:Volley 对外暴露的 API,通过 newRequestQueue(…) 函数新建并启动一个请求队列RequestQueue。

  Request:表示一个请求的抽象类。StringRequest、JsonRequest、ImageRequest都是它的子类,表示某种类型的请求。

  RequestQueue:表示请求队列,里面包含一个CacheDispatcher(用于处理走缓存请求的调度线程)、NetworkDispatcher数组(用于处理走网络请求的调度线程),一个ResponseDelivery(返回结果分发接口),通过 start() 函数启动时会启动CacheDispatcher和NetworkDispatchers。

  CacheDispatcher:一个线程,用于调度处理走缓存的请求。启动后会不断从缓存请求队列中取请求处理,队列为空则等待,请求处理结束则将结果传递给ResponseDelivery去执行后续处理。当结果未缓存过、缓存失效或缓存需要刷新的情况下,该请求都需要重新进入NetworkDispatcher去调度处理。

  NetworkDispatcher:一个线程,用于调度处理走网络的请求。启动后会不断从网络请求队列中取请求处理,队列为空则等待,请求处理结束则将结果传递给ResponseDelivery去执行后续处理,并判断结果是否要进行缓存。

  ResponseDelivery:返回结果分发接口,目前只有基于ExecutorDelivery的在入参 handler 对应线程内进行分发。

  HttpStack:处理 Http 请求,返回请求结果。目前 Volley 中有基于 HttpURLConnection 的HurlStack和 基于 Apache HttpClient 的HttpClientStack。

  Network:调用HttpStack处理请求,并将结果转换为可被ResponseDelivery处理的NetworkResponse。

  Cache:缓存请求结果,Volley 默认使用的是基于 sdcard 的DiskBasedCache。NetworkDispatcher得到请求结果后判断是否需要存储在 Cache,CacheDispatcher会从 Cache 中取缓存结果。

使用说明

  Volley工作原理图如下:

android volley框架 2017 官方版

  使用Volley框架实现网络数据请求主要有以下三个步骤:

  1.创建RequestQueue对象,定义网络请求队列;

  2.创建XXXRequest对象(XXX代表String,JSON,Image等等),定义网络数据请求的详细过程;

  3.把XXXRequest对象添加到RequestQueue中,开始执行网络请求。

  3.1 创建RequestQueue对象

  一般而言,网络请求队列都是整个APP内使用的全局性对象,因此最好写入Application类中:

  >public class MyApplication extends Application{

  // 建立请求队列

  public static RequestQueue queue;

  @Override

  public void onCreate() {

  super.onCreate();

  queue = Volley.newRequestQueue(getApplicationContext());

  }

  public static RequestQueue getHttpQueue() {

  return queue;

  }

  }

  这是,我们还需要修改AndroidManifest.xml文件,使APP的Application对象为我们刚定义的MyApplication,并添加INTERNET权限:

  >

  android:name=".MyApplication"

  android:allowBackup="true"

  android:icon="@mipmap/ic_launcher"

  android:label="@string/app_name"

  android:supportsRtl="true"

  android:theme="@style/AppTheme" >

  3.2 创建XXXRequest对象并添加到请求队列中

  Volley提供了JsonObjectRequest、JsonArrayRequest、StringRequest等Request形式:

  JsonObjectRequest:返回JSONObject对象;

  JsonArrayRequest:返回JsonArray对象;

  StringRequest:返回String。

  另外可以继承Request自定义Request。

  >public class MainActivity extends AppCompatActivity {

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  // GET请求

  VolleyGet();

  // POST请求

  VolleyPost();

  }

  // 定义POST请求的方法

  private void VolleyPost() {

  // 请求地址

  String url = "http://ce.sysu.edu.cn/hope/";

  // 创建StringRequest,定义字符串请求的请求方式为POST,

  StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener() {

  // 请求成功后执行的函数

  @Override

  public void onResponse(String s) {

  // 打印出POST请求返回的字符串

  Toast.makeText(MainActivity.this, "POST: " + s, Toast.LENGTH_LONG).show();

  }

  }, new Response.ErrorListener() {

  // 请求失败时执行的函数

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  }

  }){

  // 定义请求数据

  @Override

  protected Map getParams() throws AuthFailureError {

  Map hashMap = new HashMap();

  hashMap.put("phone", "11111");

  return hashMap;

  }

  };

  // 设置该请求的标签

  request.setTag("abcPost");

  // 将请求添加到队列中

  MyApplication.getHttpQueue().add(request);

  }

  // 定义GET请求的方法

  private void VolleyGet() {

  // 定义请求地址

  String url = "http://ce.sysu.edu.cn/hope/";

  StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener() {

  @Override

  public void onResponse(String s) {

  // 打印出GET请求返回的字符串

  Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();

  }

  }, new Response.ErrorListener() {

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  }

  });

  // 设置该请求的标签

  request.setTag("abcGet");

  // 将请求添加到队列中

  MyApplication.getHttpQueue().add(request);

  }

  }

  输出:

  >// POST请求

  POST: <厚朴网站首页源代码。。。>

  // GET请求

  GET: <厚朴网站首页源代码。。。>

  3.3 关闭请求

  3.3.1 关闭特定标签的网络请求:

  >// 网络请求标签为"abcGet"

  public void onStop() {

  super.onStop();

  MyApplication.getHttpQueues.cancelAll("abcGet");

  }

  3.3.2 取消这个队列里的所有请求:

  在activity的onStop()方法里面,取消所有的包含这个tag的请求任务。

  >@Override

  protected void onStop() {

  super.onStop();

  mRequestQueue.cancelAll(this);

  }

  四. GET和POST请求工具库的封装

  4.1 重写Application

  因为网络请求队列相对于APP应用老说是全局对象,因此可以定义在全局中。为此,我们新建一个LIMSApplication,并让其继承自Application。

  LIMSApplication.java文件:

  >public class LIMSApplication extends Application {

  public static RequestQueue volleyQueue;

  @Override

  public void onCreate() {

  super.onCreate();

  /* Volley配置 */

  // 建立Volley的Http请求队列

  volleyQueue = Volley.newRequestQueue(getApplicationContext());

  }

  // 开放Volley的HTTP请求队列接口

  public static RequestQueue getRequestQueue() {

  return volleyQueue;

  }

  }

  不要忘记在AndroidManifest.xml文件中修改Application的name和相应的网络请求权限:

  >

  android:name=".LIMSApplication"

  android:allowBackup="true"

  android:icon="@mipmap/ic_launcher"

  android:label="@string/app_name"

  android:supportsRtl="true"

  android:theme="@style/AppTheme" >

  4.2 GET和POST请求的封装:

  目前,VolleyRequestUtil工具库只包含了两个函数,分别获取GET和POST请求。

  VolleyRequestUtil.java:

  >public class VolleyRequestUtil {

  public static StringRequest stringRequest;

  public static Context context;

  /*

  * 获取GET请求内容

  * 参数:

  * context:当前上下文;

  * url:请求的url地址;

  * tag:当前请求的标签;

  * volleyListenerInterface:VolleyListenerInterface接口;

  * */

  public static void RequestGet(Context context, String url, String tag, VolleyListenerInterface volleyListenerInterface) {

  // 清除请求队列中的tag标记请求

  LIMSApplication.getRequestQueue().cancelAll(tag);

  // 创建当前的请求,获取字符串内容

  stringRequest = new StringRequest(Request.Method.GET, url, volleyListenerInterface.responseListener(), volleyListenerInterface.errorListener());

  // 为当前请求添加标记

android volley框架 2017 官方版

  stringRequest.setTag(tag);

  // 将当前请求添加到请求队列中

  LIMSApplication.getRequestQueue().add(stringRequest);

  // 重启当前请求队列

  LIMSApplication.getRequestQueue().start();

  }

  /*

  * 获取POST请求内容(请求的代码为Map)

  * 参数:

  * context:当前上下文;

  * url:请求的url地址;

  * tag:当前请求的标签;

  * params:POST请求内容;

  * volleyListenerInterface:VolleyListenerInterface接口;

  * */

  public static void RequestPost(Context context, String url, String tag, final Map params, VolleyListenerInterface volleyListenerInterface) {

  // 清除请求队列中的tag标记请求

  LIMSApplication.getRequestQueue().cancelAll(tag);

  // 创建当前的POST请求,并将请求内容写入Map中

  stringRequest = new StringRequest(Request.Method.POST, url, volleyListenerInterface.responseListener(), volleyListenerInterface.errorListener()){

  @Override

  protected Map getParams() throws AuthFailureError {

  return params;

  }

  };

  // 为当前请求添加标记

android volley框架 2017 官方版

  stringRequest.setTag(tag);

  // 将当前请求添加到请求队列中

  LIMSApplication.getRequestQueue().add(stringRequest);

  // 重启当前请求队列

  LIMSApplication.getRequestQueue().start();

  }

  }

  4.3 Volley请求(成功或失败)的监听事件封装:

  封装Volley请求(成功或失败)的监听事件,见VolleyListenerInterface.java:

  >public abstract class VolleyListenerInterface {

  public Context mContext;

  public static Response.Listener mListener;

  public static Response.ErrorListener mErrorListener;

  public VolleyListenerInterface(Context context, Response.Listener listener, Response.ErrorListener errorListener) {

  this.mContext = context;

  this.mErrorListener = errorListener;

  this.mListener = listener;

  }

  // 请求成功时的回调函数

  public abstract void onMySuccess(String result);

  // 请求失败时的回调函数

  public abstract void onMyError(VolleyError error);

  // 创建请求的事件监听

  public Response.Listener responseListener() {

  mListener = new Response.Listener() {

  @Override

  public void onResponse(String s) {

  onMySuccess(s);

  }

  };

  return mListener;

  }

  // 创建请求失败的事件监听

  public Response.ErrorListener errorListener() {

  mErrorListener = new Response.ErrorListener() {

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  onMyError(volleyError);

  }

  };

  return mErrorListener;

  }

  }

  4.3 Volley图片加载库的封装:

  Volley库还具有图片加载的功能。但适合小图片的异步加载,不适合于比较大的图片资源的请求。

  Volley提供了多种Request方法,譬如ImageRequest、ImageLoader、NetWorkImageView。

  网络图片资源的请求封装如下:

  ImageLoaderUtil.java:

  >public class ImageLoaderUtil {

  /*

  * 通过ImageRequest来显示网络图片

android volley框架 2017 官方版

  * */

  public static void setImageRequest(String url, final ImageView imageView) {

  ImageRequest imageRequest = new ImageRequest(url, new Response.Listener() {

  @Override

  public void onResponse(Bitmap bitmap) {

  imageView.setImageBitmap(bitmap);

  }

  }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  imageView.setBackgroundResource(R.mipmap.ic_launcher);

  }

  });

  LIMSApplication.getRequestQueue().add(imageRequest);

  }

  /*

  * 通过ImageLoader来显示网络图片

  * */

  public static void setImageLoader(String url, ImageView imageView, int defaultImageResId, int errorImageResId) {

  ImageLoader loader = new ImageLoader(LIMSApplication.getRequestQueue(), new BitmapCache());

  ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(imageView, defaultImageResId, errorImageResId);

  loader.get(url, imageListener);

  }

  /*

  * 通过Volley的NetWorkImageView来显示网络图片

  * */

  public static void setNetWorkImageView(String url, NetworkImageView netWorkImageView, int defaultImageResId, int errorImageResId) {

  ImageLoader loader = new ImageLoader(LIMSApplication.getRequestQueue(), new BitmapCache());

  netWorkImageView.setDefaultImageResId(defaultImageResId);

  netWorkImageView.setErrorImageResId(errorImageResId);

  netWorkImageView.setImageUrl(url, loader);

  }

  }

  五. VolleyRequestUtil与ImageLoaderUtil的使用

  5.1 用GET方式请求网络资源:

  >new VolleyRequestUtil().RequestGet(this, "http://ce.sysu.edu.cn/hope/", "hopePage",

  new VolleyListenerInterface(this, VolleyListenerInterface.mListener, VolleyListenerInterface.mErrorListener) {

  // Volley请求成功时调用的函数

  @Override

  public void onMySuccess(String result) {

  Toast.makeText(this, s, Toast.LENGTH_LONG).show();

  }

  // Volley请求失败时调用的函数

  @Override

  public void onMyError(VolleyError error) {

  // ...

  }

  });

  输出:厚朴网站首页的源代码。

  5.2 用POST方式请求网络资源:

  >new VolleyRequestUtil().RequestPOST(this, "http://ce.sysu.edu.cn/hope/", "hopePage",

  new VolleyListenerInterface(this, VolleyListenerInterface.mListener, VolleyListenerInterface.mErrorListener) {

  // Volley请求成功时调用的函数

android volley框架 2017 官方版

  @Override

  public void onMySuccess(String result) {

  Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();

  }

  // Volley请求失败时调用的函数

  @Override

  public void onMyError(VolleyError error) {

  // ...

  }

  });

  输出:厚朴网站首页的源代码。

  5.3 通过ImageRequest来显示网络图片:

  >// 参数分别为:请求图片的地址、图片的容器ImageView

  ImageView imgView = (ImageView) findViewById(R.id.imgView);

  new ImageLoaderUtil().setImageRequest("http://7xinb0.com1.z0.glb.clouddn.com/skin/HopeRebuild/dist/images/logo/logo_40.png", imgView);

android volley框架 2017 官方版

  在布局文件中,定义ImageView:

  >

  android:id="@+id/imgView"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

  5.4 通过ImageLoader来显示网络图片:

  >// 参数分别为:请求图片的地址、图片的容器ImageView、默认显示的图片ResourceID、请求失败时显示的图片的ResourceID

  new ImageLoaderUtil().setImageLoader("http://7xinb0.com1.z0.glb.clouddn.com/skin/HopeRebuild/dist/images/logo/logo_40.png", imgView, R.mipmap.default, R.mipmap.error);

  在布局文件中,定义ImageView:

  >

  android:id="@+id/imgView"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

  5.5 通过Volley的NetWorkImageView来显示网络图片:

  >// 参数分别为:请求图片的地址、图片的容器NetworkImageView、默认显示的图片ResourceID、请求失败时显示的图片的ResourceID

  NetworkImageView netWorkImageView = (NetworkImageView) findViewById(R.id.imgNetworkView);

  new ImageLoaderUtil().setNetWorkImageView("http://7xinb0.com1.z0.glb.clouddn.com/skin/HopeRebuild/dist/images/logo/logo_40.png", netWorkImageView, R.mipmap.default, R.mipmap.error);

  在布局文件中,定义NetworkImageView:

  >

  android:id="@+id/imgNetworkView"

  android:layout_width="300dp"

  android:layout_height="300dp"

  android:layout_centerHorizontal="true"/>

下载地址

  • android volley框架 2017 官方版

    本地高速下载

人气软件

查看所有评论>>网友评论0

发表评论

您的评论需要经过审核才能显示

精彩评论

最新评论

盖楼回复X

(您的评论需要经过审核才能显示)