轉載-ym—— Android網路框架Volley(體驗篇)
他們各有優劣,之前個人則比較喜歡用android-async-http, 如今Google推出了官方的針對Android平臺上的網路通訊庫,能使網路通訊更快,更簡單,更健壯,Volley在提供了高效能網路通訊功能的同時,對網路圖片載入也提供了良好的支援,完全可以滿足簡單REST客戶端的需求, 我們沒有理由不跟上時代的潮流
使用Volley
下載Volley原始碼並build jar包。
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p
$ ant jar
然後把生成的jar包引用到我們的專案中,extras目錄下則包含了目前最新的volley原始碼。
說明
此Demo主要介紹了日常網路開發常用的基本功能,但volley的擴充套件性很強,可以根據需要定製你自己的網路請求。
以上是在Google IO的演講上ppt的配圖,從上面這張圖我們可以看出,volley適合快速,簡單的請求(Json物件,圖片載入)。
volley的特性:
- JSON,影象等的非同步下載;
- 網路請求的排序(scheduling)
- 網路請求的優先順序處理
- 快取
- 多級別取消請求
- 和Activity和生命週期的聯動(Activity結束時同時取消所有網路請求)
接下來,我們來學習簡單的使用下volley給我提供的API吧。
1.首先拿到一個請求佇列(RequestQueue只需要一個例項即可,不像AsyncTask每次使用都要new一個)
[java] view plaincopyprint?- // 初始化RequestQueue一個activity只需要一個
- privatevoid initRequestQueue() {
- mQueue = Volley.newRequestQueue(getApplicationContext());
- }
2.實現volley的非同步請求類(JsonObjectRequest,JsonArrayRequest,StringRequest,ImageRequest)
由於用法都相差不大,我就不一一舉例了,舉幾個常用有代表性的例子:
以下程式碼是StringRequest的get請求:
[java] view plaincopyprint?- // get請求
- privatevoid loadGetStr(String url) {
- StringRequest srReq = new StringRequest(Request.Method.GET, url,
- new StrListener(), new StrErrListener()) {
- protectedfinal String TYPE_UTF8_CHARSET = "charset=UTF-8";
- // 重寫parseNetworkResponse方法改變返回頭引數解決亂碼問題
- // 主要是看伺服器編碼,如果伺服器編碼不是UTF-8的話那麼就需要自己轉換,反之則不需要
- @Override
- protected Response<String> parseNetworkResponse(
- NetworkResponse response) {
- try {
- String type = response.headers.get(HTTP.CONTENT_TYPE);
- if (type == null) {
- type = TYPE_UTF8_CHARSET;
- response.headers.put(HTTP.CONTENT_TYPE, type);
- } elseif (!type.contains("UTF-8")) {
- type += ";" + TYPE_UTF8_CHARSET;
- response.headers.put(HTTP.CONTENT_TYPE, type);
- }
- } catch (Exception e) {
- }
- returnsuper.parseNetworkResponse(response);
- }
- };
- srReq.setShouldCache(true); // 控制是否快取
- startVolley(srReq);
- }
以下程式碼是JsonObjectRequest的post請求: [java] view plaincopyprint?
- // post請求
- privatevoid loadPostJson(String url) {
- // 第二個引數說明:
- // Constructor which defaults to GET if jsonRequest is null, POST
- // otherwise.
- // 預設情況下設成null為get方法,否則為post方法。
- JsonObjectRequest srReq = new JsonObjectRequest(url, null,
- new JsonListener(), new StrErrListener()) {
- @Override
- protected Map<String, String> getParams() throws AuthFailureError {
- Map<String, String> map = new HashMap<String, String>();
- map.put("w", "2459115");
- map.put("u", "f");
- return map;
- }
- };
- srReq.setShouldCache(false); // 控制是否快取
- startVolley(srReq);
- }
大家注意看的話,無論是JsonObjectReques的postt還是StringRequest的get都需要傳入兩個監聽函式一個是成功一個是失敗,成功監聽他們會返回相應型別的資料: [java] view plaincopyprint?
- // Str請求成功回撥
- privateclass StrListener implements Listener<String> {
- @Override
- publicvoid onResponse(String arg0) {
- Log.e(Tag, arg0);
- }
- }
- // Gson請求成功回撥
- privateclass GsonListener implements Listener<ErrorRsp> {
- @Override
- publicvoid onResponse(ErrorRsp arg0) {
- Toast.makeText(mContext, arg0.toString(), Toast.LENGTH_LONG).show();
- }
- }
- // 共用失敗回撥
- privateclass StrErrListener implements ErrorListener {
- @Override
- publicvoid onErrorResponse(VolleyError arg0) {
- Toast.makeText(mContext,
- VolleyErrorHelper.getMessage(arg0, mContext),
- Toast.LENGTH_LONG).show();
- }
- }
- /**
- * 第三第四個引數分別用於指定允許圖片最大的寬度和高度,如果指定的網路圖片的寬度或高度大於這裡的最大值,則會對圖片進行壓縮,
- * 指定成0的話就表示不管圖片有多大,都不會進行壓縮。
- *
- * @param url
- * 圖片地址
- * @param listener
- * @param maxWidth
- * 指定允許圖片最大的寬度
- * @param maxHeight
-
相關推薦
轉載-ym—— Android網路框架Volley(體驗篇)
Volley是Google I/O 2013推出的網路通訊庫,在volley推出之前我們一般會選擇比較成熟的第三方網路通訊庫,如: 他們各有優劣,之前個人則比較喜歡用android-async-http, 如今Google推出了官方的針對Android平臺上的網路通訊庫,能使網路通訊更快
(轉)ym—— Android網路框架Volley(實戰篇)
從上一篇來看 mQueue 只需要一個物件即可,new RequestQueue物件對資源一種浪費,我們應該在application,以及可以把取消請求的方法也在application進行統一管理,看以下程式碼: [java] view plaincopyprint?
Android網路框架Volley(實戰篇)
之前講了ym—— Android網路框架Volley(體驗篇),大家應該瞭解了volley的使用,接下來我們要看看如何把volley使用到實戰專案裡面,我們先考慮下一些問題: 從上一篇來看 mQueue 只需要一個物件即可,new RequestQueue物件對資源一種浪費
Android網路框架Volley
Volley是Google I/O 2013推出的網路通訊庫,在volley推出之前我們一般會選擇比較成熟的第三方網路通訊庫,如:他們各有優劣,之前個人則比較喜歡用android-async-http, 如今Google推出了官方的針對Android平臺上的網路通訊庫,能使網路
Android網路框架volley學習(三)底層網路請求分析
相關文章 前面我們分析了一下volley的基本用法及總體工作流程,由於volley是一個網路請求框架,所以本篇我們分析一下它的底層網路請求。 volley原始碼說長不長,說短不短,也有幾十個類,該從哪裡開始分析呢?我們從最基本的開始分析,還記得一開始進行
Android中 網路框架Volley的用法
Volley是在Google I/O 2013上釋出的一框網路通訊http模組,新版本的Android已經廢除了HttpClient的使用,目前主流的android網路通訊庫有:Async-Http、NoHttp、xUtil等。本文就自己學習了Volley一些相
對Android官方網路框架——volley的封裝
使用場景 Android系統中主要提供了兩種方式來進行HTTP通訊,HttpURLConnection和HttpClient,幾乎在任何專案的程式碼中我們都能看到這兩個類的身影,使用率非常高。不過HttpURLConnection和HttpClient的用法還是稍微有些複雜
android網路框架的封裝——volley
本文主要用程式碼給出如何對volley進行封裝制定出自己的request,實現專案工程中自己的網路請求框架,主要參考的是郭大神的部落格http://blog.csdn.net/guolin_blog/article/details/17612763 首先給出自定義的Requ
Android網路框架初步嘗試
最近面試了很多公司,感慨良多,面試官都強調要多寫技術文章,多閱讀原始碼。仔細想想確實如此,想成為一名好的Android工程師,如果沒有原始碼閱讀,怎麼能寫出好的程式碼那。 因為是第一篇文章,肯定想拿出一點好東西帶大家分享。想想看自己也就寫過一個網路框架可以拿出來談談。 首先介紹我這個
教你寫Android網路框架之基本架構
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android網路框架Retrofit2使用封裝:Get/Post/檔案上傳/下載
背景 Android開發中的網路框架經過多年的發展,目前比較主流的就是Retrofit了,Retrofit2版本出現也有幾年了,為了方便使用,特封裝了一些關於Retrofit2的程式碼,分享給大家。 框架主要包括: Get請求 Post請求 檔案上傳 檔案下載
Android網路框架Retrofit的使用
Retrofit2網路框架的使用 1.配置 api 'com.squareup.retrofit2:retrofit:2.1.0' api 'cohttp://blog.csdn.net/vipzjyno1/article/details/21039349/m.squareup.retrof
教你寫Android網路框架之Request Response類與請求佇列
我正在參加部落格之星,點選這裡投我一票吧,謝謝~ 前言在教你寫Android網路框架之基本架構一文中我們已經介紹了SimpleNet網路框架的基本結構,今天我們就開始從程式碼的角度來開始切入該網路框架的實現,在剖析的同時我們會分析設計思路,以及為什麼要這樣做,這樣做的好處是
Android網路框架的選擇
今年已經收是2018年了,Android P 預覽版已經推出來了。這裡只是想說明一下技術的更新太快了。 下面說正題,目前我們在Android中可選擇的網路框架主要有以下幾種: Volley OKhttp Retrofit 這三種,但是要說明一下: 首
android網路框架Retrofit——簡介,使用的jar包
簡介 Retrofit是github上,由square發起的開源專案,使用起來非常的簡介,可以通過非常簡單的註解方式來晚上網路訪問,而且具有靈活的配置,基本可以滿足我們的專案需求,可以在andorid專案的網路方面進行快速開發。 jar包 必須:
必須知道的Android網路框架大全!值得一看良心文章!
導語 大通常在 Android 中進行網路連線一般使用 Scoket 和 HTTP兩種方式。而 HTTP 請求方式比 Scoket 多得多,HTTP 請求一般採用原生的 HttpClient 和 HttpUrlConnection 的兩種網路訪問方式。可是在 Andro
Android網路框架:OKHttp原始碼簡單解析(一)
這是第一次解析原始碼並把它寫出來,在之前,我一直以為只要會用別人的輪子就好,做出實際的效果就行,對看原始碼對自己的能力提升不以為然。後來偶然聽到一句話:看別人的DEMO,你就可以會用輪子,但是要想用好輪子,還是得看原始碼。我覺得看原始碼有兩個方面的好處: 1
Android 網路框架_常用的網路框架
看了張哥(stormzhang)的部落格之後,深有感觸,又讓我感慨了一番,而且發現張哥的部落格英文跟漢字之間是有空格的,數字跟漢字之間也有空格,看起來很舒服很美觀,張哥真的是把每一個細節都做的很好,所以身為草根開發者的我,也要學習。附上張哥部落格的一部分截圖:
android網路框架Retrofit使用記錄
Retrofit的GET請求: 情景:在新聞app中要獲取某個使用者收藏的文章資訊。 這個請求我們使用的是get請求,使用者的授權資訊放到請求的Headers中;其他引數比如offset-偏移起始位置,limit - 返回最多結果數等引數都放在 Linke
Android 網路框架之Retrofit2使用詳解及從原始碼中解析原理
就目前來說Retrofit2使用的已相當的廣泛,那麼我們先來了解下兩個問題: 1 . 什麼是Retrofit? Retrofit是針對於Android/Java的、基於okHttp的、一種輕量級且安全的、並使用註解方式的網路請求框架。 2 . 我們為什麼要