xUtils簡介 xUtils 包含了很多實用的android工具。 xUtils 最初源於Afinal框架,進行了大量重構,使得xUtils支持大文件上傳,更全面的http請求協議支持(10種謂詞),擁有更加靈活的ORM,更多的事件註解支持且不受混淆影響... xUitls最低相容android ...
xUtils簡介
- xUtils 包含了很多實用的android工具。
- xUtils 最初源於Afinal框架,進行了大量重構,使得xUtils支持大文件上傳,更全面的http請求協議支持(10種謂詞),擁有更加靈活的ORM,更多的事件註解支持且不受混淆影響...
- xUitls最低相容android 2.2 (api level 8)
本文地址:http://www.cnblogs.com/wuyudong/p/5902876.html,轉載請註明源地址。
目前xUtils主要有四大模塊:
DbUtils模塊:
- android中的orm框架,一行代碼就可以進行增刪改查;
- 支持事務,預設關閉;
- 可通過註解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請註解表名和列名);
- 支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
- 自動載入外鍵關聯實體,支持延時載入;
- 支持鏈式表達查詢,更直觀的查詢語義,參考下麵的介紹或sample中的例子。
ViewUtils模塊:
- android中的ioc框架,完全註解方式就可以進行UI,資源和事件綁定;
- 新的事件綁定方式,使用混淆工具混淆後仍可正常工作;
- 目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
HttpUtils模塊:
- 支持同步,非同步方式的請求;
- 支持大文件上傳,上傳大文件不會oom;
- 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
- 下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
- 返迴文本內容的請求(預設只啟用了GET請求)支持緩存,可設置預設過期時間和針對當前請求的過期時間。
BitmapUtils模塊:
- 載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
- 支持載入網路圖片和本地圖片;
- 記憶體管理使用lru演算法,更好的管理bitmap記憶體;
- 可配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等...
xutils使用過程
1,導入xutils的jar包
2,添加xutils需要使用的許可權
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3,獲取HttpUtils對象,下載指定鏈接地址的apk
4,HttpUtils對象調用download(下載鏈接地址,下載後放置文件的路徑,下載過程中方法的回調
onStart()
onloading()
onSuccesd()
onFail()
5,下載apk後的安裝過程,
本文實現手機衛士的從伺服器端下載apk更新本機的方法
protected void downloadApk() { //apk下載鏈接地址,放置apk的所在路徑 //1,判斷sd卡是否可用 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //2,獲取sd路徑 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "mobilesafe.apk"; //3,發送請求,獲取apk,並且放置到指定路徑 HttpUtils httpUtils = new HttpUtils(); //4,發送請求,傳遞參數(下載地址,下載應用放置位置) httpUtils.download(mDownloadUrl, path, new RequestCallBack<File>() { @Override public void onSuccess(ResponseInfo<File> responseInfo) { //下載成功(下載過後的放置在sd卡中apk) Log.i(tag, "下載成功"); File file = responseInfo.result; } @Override public void onFailure(HttpException arg0, String arg1) { // 下載失敗 Log.i(tag, "下載失敗"); } //剛剛開始下載方法 @Override public void onStart() { Log.i(tag, "剛剛開始下載"); super.onStart(); } //下載過程中的方法(下載apk總大小,當前的下載位置,是否正在下載) @Override public void onLoading(long total, long current, boolean isUploading) { Log.i(tag, "下載中........"); Log.i(tag, "total = " + total); Log.i(tag, "current = " + current); super.onLoading(total, current, isUploading); } }); } }