github:https://github.com/wyouflf/xUtils3
xUtils3簡介
- xUtils 包含了很多實用的android工具.
- xUtils 支持超大文件(超過2G)上傳,更全面的http請求協議支持(11種謂詞),擁有更加靈活的ORM,更多的事件注解支持且不受混淆影響...
- xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
- xUtils3變化較多所以建立了新的項目不在舊版(github.com/wyouflf/xUtils)上繼續維護, 相對於舊版本:
- HTTP實現替換HttpClient為UrlConnection, 自動解析回調泛型, 更安全的斷點續傳策略.
- 支持標准的Cookie策略, 區分domain, path...
- 事件注解去除不常用的功能, 提高性能.
- 數據庫api簡化提高性能, 達到和greenDao一致的性能.
- 圖片綁定支持gif, webp; 支持圓角, 圓形, 方形等裁剪, 支持自動旋轉
使用前配置
需要的權限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
初始化
// 在application的onCreate中初始化 @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(true); // 是否輸出debug日志 }
POST 請求
/** * 自定義實體參數類請參考: * 請求注解 {@link org.xutils.http.annotation.HttpRequest} * 請求注解處理模板接口 {@link org.xutils.http.app.ParamsBuilder} * * 需要自定義類型作為callback的泛型時, 參考: * 響應注解 {@link org.xutils.http.annotation.HttpResponse} * 響應注解處理模板接口 {@link org.xutils.http.app.ResponseParser} * * 示例: 查看 org.xutils.sample.http 包里的代碼 */ RequestParams params = new RequestParams (url);
// 有上傳文件時使用multipart表單, 否則上傳原始文件流. // params.setMultipart(true); // 上傳文件方式 1 // params.uploadFile = new File("/sdcard/test.txt"); // 上傳文件方式 2 params.addBodyParameter("uploadFile", new File("/sdcard/test.txt")); Callback.Cancelable cancelable = x.http().post(params, /** * 1. callback的泛型: * callback參數默認支持的泛型類型參見{@link org.xutils.http.loader.LoaderFactory}, * 例如: 指定泛型為File則可實現文件下載, 使用params.setSaveFilePath(path)指定文件保存的全路徑. * 默認支持斷點續傳(采用了文件鎖和尾端校驗續傳文件的一致性). * 其他常用類型可以自己在LoaderFactory中注冊, * 也可以使用{@link org.xutils.http.annotation.HttpResponse} * 將注解HttpResponse加到自定義返回值類型上, 實現自定義ResponseParser接口來統一轉換. * 如果返回值是json形式, 那么利用第三方的json工具將十分容易定義自己的ResponseParser. * 如示例代碼{@link org.xutils.sample.http.BaiduResponse}, 可直接使用BaiduResponse作為 * callback的泛型. * * 2. callback的組合: * 可以用基類或接口組合個種類的Callback, 見{@link org.xutils.common.Callback}. * 例如: * a. 組合使用CacheCallback將使請求檢測緩存或將結果存入緩存(僅GET請求生效). * b. 組合使用PrepareCallback的prepare方法將為callback提供一次后台執行耗時任務的機會, * 然后將結果給onCache或onSuccess. * c. 組合使用ProgressCallback將提供進度回調. * ...(可參考{@link org.xutils.image.ImageLoader} * 或 示例代碼中的 {@link org.xutils.sample.download.DownloadCallback}) * * 3. 請求過程攔截或記錄日志: 參考 {@link org.xutils.http.app.RequestTracker} * * 4. 請求Header獲取: 參考 {@link org.xutils.http.app.InterceptRequestListener} * * 5. 其他(線程池, 超時, 重定向, 重試, 代理等): 參考 {@link org.xutils.http.RequestParams * **/ new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Toast.makeText(x.app(), result, Toast.LENGTH_LONG).show(); } @Override public void onError(Throwable ex, boolean isOnCallback) { //Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); if (ex instanceof HttpException) { // 網絡錯誤 HttpException httpEx = (HttpException) ex; int responseCode = httpEx.getCode(); String responseMsg = httpEx.getMessage(); String errorResult = httpEx.getResult(); // ... } else { // 其他錯誤 // ... } Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancelled(CancelledException cex) { Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show(); } @Override public void onFinished() { } }); // cancelable.cancel(); // 取消 // 如果需要記錄請求的日志, 可使用RequestTracker接口(優先級依次降低, 找到一個實現后會忽略后面的): // 1. 自定義Callback同時實現RequestTracker接口; // 2. 自定義ResponseParser同時實現RequestTracker接口; // 3. 在LoaderFactory注冊.
混淆:
proguard-project中加入:
-libraryjars libs/xUtils-3.1.14.jar
-keep class com.lidroid.** { *; }
-keepattributes Signature