免费黄色视频在线观看不卡无码国产一区二区三区_亚洲中文字幕无码中文字 _亚洲 国产专区 校园 欧美_国内自拍真实伦在线视频_国产精品成人观看视频免费

河?xùn)|軟件園:綠色免費(fèi)的軟件下載站! 最新軟件|軟件分類|軟件專題|軟件發(fā)布

所在位置:首頁(yè) > 應(yīng)用軟件 > 其它應(yīng)用 > android volley框架 2017 官方版

android volley框架

 2017 官方版
  • 軟件大?。?span itemprop="fileSize">302 KB
  • 更新日期:2017-03-18
  • 軟件語(yǔ)言:簡(jiǎn)體中文
  • 軟件類別:其它應(yīng)用
  • 軟件授權(quán):免費(fèi)軟件
  • 軟件官網(wǎng):
  • 適用平臺(tái):WinXP, Win7, Win8, Win10, WinAll
  • 軟件廠商:

9.1
軟件評(píng)分

本地下載文件大?。?02 KB 高速下載需下載高速下載器,提速50%

軟件介紹人氣軟件相關(guān)文章網(wǎng)友評(píng)論下載地址

為您推薦:其它應(yīng)用

  android volley是款這進(jìn)行android開(kāi)發(fā)的時(shí)候,必須要進(jìn)行使用的或者是不可或缺的重要框架;如果您想要進(jìn)行快速的開(kāi)發(fā)或者方便快捷的使用,就需要使用這款android volley框架了,這款軟件的操作非常的簡(jiǎn)單,使用方便,是款非常值得信賴的軟件,需要的朋友趕快將軟件android volley框架下載來(lái)進(jìn)行使用試試吧,相信您一定不會(huì)后悔的!

android volley框架 2017 官方版

軟件功能

  自動(dòng)調(diào)度網(wǎng)絡(luò)請(qǐng)求;

  高并發(fā)網(wǎng)絡(luò)連接;

  通過(guò)標(biāo)準(zhǔn)的 HTTP cache coherence(高速緩存一致性)緩存磁盤(pán)和內(nèi)存透明的響應(yīng);

  支持指定請(qǐng)求的優(yōu)先級(jí);

  網(wǎng)絡(luò)請(qǐng)求cancel機(jī)制。我們可以取消單個(gè)請(qǐng)求,或者指定取消請(qǐng)求隊(duì)列中的一個(gè)區(qū)域;

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

  包含了調(diào)試與追蹤工具;

  Volley 不適合用來(lái)下載大的數(shù)據(jù)文件。因?yàn)?Volley 會(huì)保持在解析的過(guò)程中所有的響應(yīng)。對(duì)于下載大量的數(shù)據(jù)操作,請(qǐng)考慮使用 DownloadManager。

軟件特色

  Volley:Volley 對(duì)外暴露的 API,通過(guò) newRequestQueue(…) 函數(shù)新建并啟動(dòng)一個(gè)請(qǐng)求隊(duì)列RequestQueue。

  Request:表示一個(gè)請(qǐng)求的抽象類。StringRequest、JsonRequest、ImageRequest都是它的子類,表示某種類型的請(qǐng)求。

  RequestQueue:表示請(qǐng)求隊(duì)列,里面包含一個(gè)CacheDispatcher(用于處理走緩存請(qǐng)求的調(diào)度線程)、NetworkDispatcher數(shù)組(用于處理走網(wǎng)絡(luò)請(qǐng)求的調(diào)度線程),一個(gè)ResponseDelivery(返回結(jié)果分發(fā)接口),通過(guò) start() 函數(shù)啟動(dòng)時(shí)會(huì)啟動(dòng)CacheDispatcher和NetworkDispatchers。

  CacheDispatcher:一個(gè)線程,用于調(diào)度處理走緩存的請(qǐng)求。啟動(dòng)后會(huì)不斷從緩存請(qǐng)求隊(duì)列中取請(qǐng)求處理,隊(duì)列為空則等待,請(qǐng)求處理結(jié)束則將結(jié)果傳遞給ResponseDelivery去執(zhí)行后續(xù)處理。當(dāng)結(jié)果未緩存過(guò)、緩存失效或緩存需要刷新的情況下,該請(qǐng)求都需要重新進(jìn)入NetworkDispatcher去調(diào)度處理。

  NetworkDispatcher:一個(gè)線程,用于調(diào)度處理走網(wǎng)絡(luò)的請(qǐng)求。啟動(dòng)后會(huì)不斷從網(wǎng)絡(luò)請(qǐng)求隊(duì)列中取請(qǐng)求處理,隊(duì)列為空則等待,請(qǐng)求處理結(jié)束則將結(jié)果傳遞給ResponseDelivery去執(zhí)行后續(xù)處理,并判斷結(jié)果是否要進(jìn)行緩存。

  ResponseDelivery:返回結(jié)果分發(fā)接口,目前只有基于ExecutorDelivery的在入?yún)?handler 對(duì)應(yīng)線程內(nèi)進(jìn)行分發(fā)。

  HttpStack:處理 Http 請(qǐng)求,返回請(qǐng)求結(jié)果。目前 Volley 中有基于 HttpURLConnection 的HurlStack和 基于 Apache HttpClient 的HttpClientStack。

  Network:調(diào)用HttpStack處理請(qǐng)求,并將結(jié)果轉(zhuǎn)換為可被ResponseDelivery處理的NetworkResponse。

  Cache:緩存請(qǐng)求結(jié)果,Volley 默認(rèn)使用的是基于 sdcard 的DiskBasedCache。NetworkDispatcher得到請(qǐng)求結(jié)果后判斷是否需要存儲(chǔ)在 Cache,CacheDispatcher會(huì)從 Cache 中取緩存結(jié)果。

使用說(shuō)明

  Volley工作原理圖如下:

android volley框架 2017 官方版

  使用Volley框架實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求主要有以下三個(gè)步驟:

  1.創(chuàng)建RequestQueue對(duì)象,定義網(wǎng)絡(luò)請(qǐng)求隊(duì)列;

  2.創(chuàng)建XXXRequest對(duì)象(XXX代表String,JSON,Image等等),定義網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求的詳細(xì)過(guò)程;

  3.把XXXRequest對(duì)象添加到RequestQueue中,開(kāi)始執(zhí)行網(wǎng)絡(luò)請(qǐng)求。

  3.1 創(chuàng)建RequestQueue對(duì)象

  一般而言,網(wǎng)絡(luò)請(qǐng)求隊(duì)列都是整個(gè)APP內(nèi)使用的全局性對(duì)象,因此最好寫(xiě)入Application類中:

  >public class MyApplication extends Application{

  // 建立請(qǐng)求隊(duì)列

  public static RequestQueue queue;

  @Override

  public void onCreate() {

  super.onCreate();

  queue = Volley.newRequestQueue(getApplicationContext());

  }

  public static RequestQueue getHttpQueue() {

  return queue;

  }

  }

  這是,我們還需要修改AndroidManifest.xml文件,使APP的Application對(duì)象為我們剛定義的MyApplication,并添加INTERNET權(quán)限:

  >

  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 創(chuàng)建XXXRequest對(duì)象并添加到請(qǐng)求隊(duì)列中

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

  JsonObjectRequest:返回JSONObject對(duì)象;

  JsonArrayRequest:返回JsonArray對(duì)象;

  StringRequest:返回String。

  另外可以繼承Request自定義Request。

  >public class MainActivity extends AppCompatActivity {

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  // GET請(qǐng)求

  VolleyGet();

  // POST請(qǐng)求

  VolleyPost();

  }

  // 定義POST請(qǐng)求的方法

  private void VolleyPost() {

  // 請(qǐng)求地址

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

  // 創(chuàng)建StringRequest,定義字符串請(qǐng)求的請(qǐng)求方式為POST,

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

  // 請(qǐng)求成功后執(zhí)行的函數(shù)

  @Override

  public void onResponse(String s) {

  // 打印出POST請(qǐng)求返回的字符串

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

  }

  }, new Response.ErrorListener() {

  // 請(qǐng)求失敗時(shí)執(zhí)行的函數(shù)

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  }

  }){

  // 定義請(qǐng)求數(shù)據(jù)

  @Override

  protected Map getParams() throws AuthFailureError {

  Map hashMap = new HashMap();

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

  return hashMap;

  }

  };

  // 設(shè)置該請(qǐng)求的標(biāo)簽

  request.setTag("abcPost");

  // 將請(qǐng)求添加到隊(duì)列中

  MyApplication.getHttpQueue().add(request);

  }

  // 定義GET請(qǐng)求的方法

  private void VolleyGet() {

  // 定義請(qǐng)求地址

  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請(qǐng)求返回的字符串

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

  }

  }, new Response.ErrorListener() {

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  }

  });

  // 設(shè)置該請(qǐng)求的標(biāo)簽

  request.setTag("abcGet");

  // 將請(qǐng)求添加到隊(duì)列中

  MyApplication.getHttpQueue().add(request);

  }

  }

  輸出:

  >// POST請(qǐng)求

  POST: <厚樸網(wǎng)站首頁(yè)源代碼。。。>

  // GET請(qǐng)求

  GET: <厚樸網(wǎng)站首頁(yè)源代碼。。。>

  3.3 關(guān)閉請(qǐng)求

  3.3.1 關(guān)閉特定標(biāo)簽的網(wǎng)絡(luò)請(qǐng)求:

  >// 網(wǎng)絡(luò)請(qǐng)求標(biāo)簽為"abcGet"

  public void onStop() {

  super.onStop();

  MyApplication.getHttpQueues.cancelAll("abcGet");

  }

  3.3.2 取消這個(gè)隊(duì)列里的所有請(qǐng)求:

  在activity的onStop()方法里面,取消所有的包含這個(gè)tag的請(qǐng)求任務(wù)。

  >@Override

  protected void onStop() {

  super.onStop();

  mRequestQueue.cancelAll(this);

  }

  四. GET和POST請(qǐng)求工具庫(kù)的封裝

  4.1 重寫(xiě)Application

  因?yàn)榫W(wǎng)絡(luò)請(qǐng)求隊(duì)列相對(duì)于APP應(yīng)用老說(shuō)是全局對(duì)象,因此可以定義在全局中。為此,我們新建一個(gè)LIMSApplication,并讓其繼承自Application。

  LIMSApplication.java文件:

  >public class LIMSApplication extends Application {

  public static RequestQueue volleyQueue;

  @Override

  public void onCreate() {

  super.onCreate();

  /* Volley配置 */

  // 建立Volley的Http請(qǐng)求隊(duì)列

  volleyQueue = Volley.newRequestQueue(getApplicationContext());

  }

  // 開(kāi)放Volley的HTTP請(qǐng)求隊(duì)列接口

  public static RequestQueue getRequestQueue() {

  return volleyQueue;

  }

  }

  不要忘記在AndroidManifest.xml文件中修改Application的name和相應(yīng)的網(wǎng)絡(luò)請(qǐng)求權(quán)限:

  >

  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請(qǐng)求的封裝:

  目前,VolleyRequestUtil工具庫(kù)只包含了兩個(gè)函數(shù),分別獲取GET和POST請(qǐng)求。

  VolleyRequestUtil.java:

  >public class VolleyRequestUtil {

  public static StringRequest stringRequest;

  public static Context context;

  /*

  * 獲取GET請(qǐng)求內(nèi)容

  * 參數(shù):

  * context:當(dāng)前上下文;

  * url:請(qǐng)求的url地址;

  * tag:當(dāng)前請(qǐng)求的標(biāo)簽;

  * volleyListenerInterface:VolleyListenerInterface接口;

  * */

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

  // 清除請(qǐng)求隊(duì)列中的tag標(biāo)記請(qǐng)求

  LIMSApplication.getRequestQueue().cancelAll(tag);

  // 創(chuàng)建當(dāng)前的請(qǐng)求,獲取字符串內(nèi)容

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

  // 為當(dāng)前請(qǐng)求添加標(biāo)記

android volley框架 2017 官方版

  stringRequest.setTag(tag);

  // 將當(dāng)前請(qǐng)求添加到請(qǐng)求隊(duì)列中

  LIMSApplication.getRequestQueue().add(stringRequest);

  // 重啟當(dāng)前請(qǐng)求隊(duì)列

  LIMSApplication.getRequestQueue().start();

  }

  /*

  * 獲取POST請(qǐng)求內(nèi)容(請(qǐng)求的代碼為Map)

  * 參數(shù):

  * context:當(dāng)前上下文;

  * url:請(qǐng)求的url地址;

  * tag:當(dāng)前請(qǐng)求的標(biāo)簽;

  * params:POST請(qǐng)求內(nèi)容;

  * volleyListenerInterface:VolleyListenerInterface接口;

  * */

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

  // 清除請(qǐng)求隊(duì)列中的tag標(biāo)記請(qǐng)求

  LIMSApplication.getRequestQueue().cancelAll(tag);

  // 創(chuàng)建當(dāng)前的POST請(qǐng)求,并將請(qǐng)求內(nèi)容寫(xiě)入Map中

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

  @Override

  protected Map getParams() throws AuthFailureError {

  return params;

  }

  };

  // 為當(dāng)前請(qǐng)求添加標(biāo)記

android volley框架 2017 官方版

  stringRequest.setTag(tag);

  // 將當(dāng)前請(qǐng)求添加到請(qǐng)求隊(duì)列中

  LIMSApplication.getRequestQueue().add(stringRequest);

  // 重啟當(dāng)前請(qǐng)求隊(duì)列

  LIMSApplication.getRequestQueue().start();

  }

  }

  4.3 Volley請(qǐng)求(成功或失?。┑谋O(jiān)聽(tīng)事件封裝:

  封裝Volley請(qǐng)求(成功或失?。┑谋O(jiān)聽(tīng)事件,見(jiàn)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;

  }

  // 請(qǐng)求成功時(shí)的回調(diào)函數(shù)

  public abstract void onMySuccess(String result);

  // 請(qǐng)求失敗時(shí)的回調(diào)函數(shù)

  public abstract void onMyError(VolleyError error);

  // 創(chuàng)建請(qǐng)求的事件監(jiān)聽(tīng)

  public Response.Listener responseListener() {

  mListener = new Response.Listener() {

  @Override

  public void onResponse(String s) {

  onMySuccess(s);

  }

  };

  return mListener;

  }

  // 創(chuàng)建請(qǐng)求失敗的事件監(jiān)聽(tīng)

  public Response.ErrorListener errorListener() {

  mErrorListener = new Response.ErrorListener() {

  @Override

  public void onErrorResponse(VolleyError volleyError) {

  onMyError(volleyError);

  }

  };

  return mErrorListener;

  }

  }

  4.3 Volley圖片加載庫(kù)的封裝:

  Volley庫(kù)還具有圖片加載的功能。但適合小圖片的異步加載,不適合于比較大的圖片資源的請(qǐng)求。

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

  網(wǎng)絡(luò)圖片資源的請(qǐng)求封裝如下:

  ImageLoaderUtil.java:

  >public class ImageLoaderUtil {

  /*

  * 通過(guò)ImageRequest來(lái)顯示網(wǎng)絡(luò)圖片

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);

  }

  /*

  * 通過(guò)ImageLoader來(lái)顯示網(wǎng)絡(luò)圖片

  * */

  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);

  }

  /*

  * 通過(guò)Volley的NetWorkImageView來(lái)顯示網(wǎng)絡(luò)圖片

  * */

  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方式請(qǐng)求網(wǎng)絡(luò)資源:

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

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

  // Volley請(qǐng)求成功時(shí)調(diào)用的函數(shù)

  @Override

  public void onMySuccess(String result) {

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

  }

  // Volley請(qǐng)求失敗時(shí)調(diào)用的函數(shù)

  @Override

  public void onMyError(VolleyError error) {

  // ...

  }

  });

  輸出:厚樸網(wǎng)站首頁(yè)的源代碼。

  5.2 用POST方式請(qǐng)求網(wǎng)絡(luò)資源:

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

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

  // Volley請(qǐng)求成功時(shí)調(diào)用的函數(shù)

android volley框架 2017 官方版

  @Override

  public void onMySuccess(String result) {

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

  }

  // Volley請(qǐng)求失敗時(shí)調(diào)用的函數(shù)

  @Override

  public void onMyError(VolleyError error) {

  // ...

  }

  });

  輸出:厚樸網(wǎng)站首頁(yè)的源代碼。

  5.3 通過(guò)ImageRequest來(lái)顯示網(wǎng)絡(luò)圖片:

  >// 參數(shù)分別為:請(qǐng)求圖片的地址、圖片的容器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 通過(guò)ImageLoader來(lái)顯示網(wǎng)絡(luò)圖片:

  >// 參數(shù)分別為:請(qǐng)求圖片的地址、圖片的容器ImageView、默認(rèn)顯示的圖片ResourceID、請(qǐng)求失敗時(shí)顯示的圖片的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 通過(guò)Volley的NetWorkImageView來(lái)顯示網(wǎng)絡(luò)圖片:

  >// 參數(shù)分別為:請(qǐng)求圖片的地址、圖片的容器NetworkImageView、默認(rèn)顯示的圖片ResourceID、請(qǐng)求失敗時(shí)顯示的圖片的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"/>

下載地址

查看所有評(píng)論>>網(wǎng)友評(píng)論0

發(fā)表評(píng)論

您的評(píng)論需要經(jīng)過(guò)審核才能顯示

精彩評(píng)論

最新評(píng)論

蓋樓回復(fù)X

(您的評(píng)論需要經(jīng)過(guò)審核才能顯示)