1.xUtils3 介紹android
xUtils 中目前包括了主要的四大模塊,分別爲 DbUtils 模塊、ViewUtils 模塊、HttpUtils 模塊以及 BitmapUtils 模塊。json
xUtils3網絡模塊大大方便了在實際開發中網絡模塊的開發,xUtils3網絡模塊大體包括GET請求、POST請求、如何使用其餘請求方式、上傳文件、下載文件、使用緩存等功能。緩存
本文重點講解:HttpUtils 模塊的使用。服務器
2.xUtils3 的主要特性以下:cookie
(1)穩定的基石: AbsTask 和統一的回調接口 Callback, 任何異常, 即便你的回調方法實現有異常都會進入 onError,任何狀況下 onFinished 總會讓你知道任務結束了。網絡
(2)基於高效穩定的 orm 工具,http 模塊得以更方便的實現 cookie (支持 domain、 path、 expiry 等特性)和 緩存(支持 Cache-Control、Last-Modified、 ETag 等特性)的支持。app
(3)有了強大的 http 及其下載緩存的支持,image 模塊的實現至關的簡潔,而且支持回收被 view 持有,但被 Mem Cache 移除的圖片,減小頁面回退時的閃爍。dom
(4)View 註解模塊僅僅400多行代碼卻靈活的支持了各類 View 注入和事件綁定, 包括擁有多了方法的 listener 的支持。curl
3. HttpUtils 模塊的主要特性。異步
(1)支持同步,異步方式的請求。
(2)支持大文件上傳,上傳大文件不會出現 oom 內存溢出狀況。
(3)支持 GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT 的請求。
(4)下載支持301/302重定向,支持設置是否根據 Content-Disposition 重命名下載的文件。
(5)返回文本內容的請求(默認只啓用了 GET 請求)支持緩存,可設置默認過時時間和針對當前請求的過時時間。
4.xUtils3 使用環境配置
(1)添加依賴
implementation 'org.xutils:xutils:3.5.1'
(2)在manifest文件中添加權限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(3)對Xutils3進行初始化
新建一個類MyApplication繼承Application:
package com.example.administrator.test66smartbeijing; import android.app.Application; import org.xutils.x; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(false); //輸出debug日誌,開啓會影響性能 } }
在Manifest文件中註冊MyApplication
<application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/icon_150" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
5.使用案例
package com.example.administrator.test66smartbeijing.fragment; import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.administrator.test66smartbeijing.R; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; /** * 利用tabLayout+viewPager實現帶頂部菜單欄的fragment */ public class NewsCenterVolleyFragment extends Fragment { //handler用來處理消息 @SuppressLint("HandlerLeak") Handler handler=new Handler(){ @SuppressLint("ResourceType") @Override public void handleMessage(Message msg) { //更新ui if(msg.what==0x01){ //接收到消息後,從當前的fragment跳轉到另外一個activity中 String queryResultStr= (String) msg.obj; } } }; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { getDataFromServer(); View view=inflater.inflate(R.layout.layout_fm_newscenter_volley,container,false); return view; } /** * 從服務器獲取數據 */ private void getDataFromServer() { //請求地址 String url="http://118.25.152.62:8080/zhbj/categories.json"; RequestParams params = new RequestParams(url); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { //解析result System.out.println(result); } //請求異常後的回調方法 @Override public void onError(Throwable ex, boolean isOnCallback) { } //主動調用取消請求的回調方法 @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } }
6.效果展現
System.out: {"retcode":200,"data":[{"id":10000,"title":"新聞","type":1,"children":[{"id":10007,"title":"北京","type":1,"url":"/10007/list_1.json"},{"id":10006,"title":"中國","type":1,"url":"/10006/list_1.json"},{"id":10008,"title":"國際","type":1,"url":"/10008/list_1.json"},{"id":10010,"title":"體育","type":1,"url":"/10010/list_1.json"},{"id":10091,"title":"生活","type":1,"url":"/10091/list_1.json"},{"id":10012,"title":"旅遊","type":1,"url":"/10012/list_1.json"},{"id":10095,"title":"科技","type":1,"url":"/10095/list_1.json"},{"id":10009,"title":"軍事","type":1,"url":"/10009/list_1.json"},{"id":10093,"title":"時尚","type":1,"url":"/10093/list_1.json"},{"id":10011,"title":"財經","type":1,"url":"/10011/list_1.json"},{"id":10094,"title":"育兒","type":1,"url":"/10094/list_1.json"},{"id":10105,"title":"汽車","type":1,"url":"/10105/list_1.json"}]},{"id":10002,"title":"專題","type":10,"url":"/10006/list_1.json","url1":"/10007/list1_1.json"},{"id":10003,"title":"組圖","type":2,"url":"/10008/list_1.json"},{"id":10004,"title":"互動","type":3,"excurl":"","dayurl":"","weekurl":""}],"extend":[10007,10006,10008,10014,10012,10091,10009,10010,10095]}