xutils發(fā)送POST_第1頁
xutils發(fā)送POST_第2頁
xutils發(fā)送POST_第3頁
xutils發(fā)送POST_第4頁
xutils發(fā)送POST_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、最近搜了一些框架供初學(xué)者學(xué)習(xí),比較了一下XUtils是目前git上比較活躍 功能比較完善的一個(gè)框架,是基于afinal開發(fā)的,比afinal穩(wěn)定性提高了不少,下面是介紹:鑒于大家的熱情,我又寫了一篇Android 最火框架XUtils之注解機(jī)制詳解<-點(diǎn)擊查看xUtils簡介xUtils 包含了很多實(shí)用的android工具。xUtils 最初源于Afinal框架,進(jìn)行了大量重構(gòu),使得xUtils支持大文件上傳,更全面的http請(qǐng)求協(xié)議支持(10種謂詞),擁有更加靈活的ORM,更多的事件注解支持且不受混淆影響.xUitls最低兼容android 2.2 (api level 8)目前xUt

2、ils主要有四大模塊:DbUtils模塊:android中的orm框架,一行代碼就可以進(jìn)行增刪改查;支持事務(wù),默認(rèn)關(guān)閉;可通過注解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時(shí)候請(qǐng)注解表名和列名);支持綁定外鍵,保存實(shí)體時(shí)外鍵關(guān)聯(lián)實(shí)體自動(dòng)保存或更新;自動(dòng)加載外鍵關(guān)聯(lián)實(shí)體,支持延時(shí)加載;支持鏈?zhǔn)奖磉_(dá)查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。ViewUtils模塊:android中的ioc框架,完全注解方式就可以進(jìn)行UI,資源和事件綁定;新的事件綁定方式,使用混淆工具混淆后仍可正常工作;目前支持常用的20種事件綁定,參見ViewComm

3、onEventListener類和包c(diǎn)om.lidroid.xutils.view.annotation.event。HttpUtils模塊:支持同步,異步方式的請(qǐng)求;支持大文件上傳,上傳大文件不會(huì)oom;支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請(qǐng)求;下載支持301/302重定向,支持設(shè)置是否根據(jù)Content-Disposition重命名下載的文件;返回文本內(nèi)容的請(qǐng)求(默認(rèn)只啟用了GET請(qǐng)求)支持緩存,可設(shè)置默認(rèn)過期時(shí)間和針對(duì)當(dāng)前請(qǐng)求的過期時(shí)間。BitmapUtils模塊:加載bitmap的時(shí)候無需考慮bitmap加

4、載過程中出現(xiàn)的oom和android容器快速滑動(dòng)時(shí)候出現(xiàn)的圖片錯(cuò)位等現(xiàn)象;支持加載網(wǎng)絡(luò)圖片和本地圖片;內(nèi)存管理使用lru算法,更好的管理bitmap內(nèi)存;可配置線程加載線程數(shù)量,緩存大小,緩存路徑,加載顯示動(dòng)畫等.使用xUtils快速開發(fā)框架需要有以下權(quán)限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5、 混淆時(shí)注意事項(xiàng):添加Android默認(rèn)混淆配置$sdk.dir/tools/proguard/proguard-android.txt不要混淆xUtils中的注解類型,添加混淆配置:-keep class * extends java.lang.annotation.Annotation *; 對(duì)使用DbUtils模塊持久化的實(shí)體類不要混淆,或者注解所有表和列名稱Table(name="xxx"),Id(column="xxx"),Column(column="xxx"),Foreign(column="xxx"

6、,foreign="xxx");DbUtils使用方法:DbUtils db = DbUtils.create(this);User user = new User(); /這里需要注意的是User對(duì)象必須有id屬性,或者有通過ID注解的屬性u(píng)ser.setEmail("wyouflf");user.setName("wyouflf");db.save(user); / 使用saveBindingId保存實(shí)體時(shí)會(huì)為實(shí)體的id賦值./ 查找Parent entity = db.findById(Parent.class, parent.

7、getId();List<Parent> list = db.findAll(Parent.class);/通過類型查找Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test");/ IS NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null);/ IS NOT NUL

8、LParent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null);/ WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffsetList<Parent> list = db.findAll(Selector.from(Parent.class) .where("id" ,"<", 5

9、4) .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30) .orderBy("id") .limit(pageSize) .offset(pageSize * pageIndex);/ op為"in"時(shí),最后一個(gè)參數(shù)必須是數(shù)組或Iterable的實(shí)現(xiàn)類(例如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("i

10、d", "in", new int1, 2, 3);/ op為"between"時(shí),最后一個(gè)參數(shù)必須是數(shù)組或Iterable的實(shí)現(xiàn)類(例如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String"1", "5");DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class

11、).select("name");/select("name")只取出name列List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)");.List<DbModel> dbModels = db.findDbModelAll(sql); / 自定義sql查詢db.execNonQuery(sql)

12、/ 執(zhí)行自定義sql.ViewUtils使用方法完全注解方式就可以進(jìn)行UI綁定和事件綁定。無需findViewById和setClickListener等。/ xUtils的view注解要求必須提供id,以使代碼混淆不受影響。ViewInject(R.id.textView)TextView textView;/ViewInject(vale=R.id.textView, parentId=R.id.parentView)/TextView textView;ResInject(id = R.string.label, type = ResType.String)private String

13、label;/ 取消了之前使用方法名綁定事件的方式,使用id綁定不受混淆影響/ 支持綁定多個(gè)id OnClick(R.id.id1, R.id.id2, R.id.id3)/ or OnClick(value=R.id.id1, R.id.id2, R.id.id3, parentId=R.id.pid1, R.id.pid2, R.id.pid3)/ 更多事件支持參見ViewCommonEventListener類和包c(diǎn)om.lidroid.xutils.view.annotation.event。OnClick(R.id.test_button)public void testButton

14、Click(View v) / 方法簽名必須和接口中的要求一致 ./在Activity中注入:Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); ViewUtils.inject(this); /注入view和事件 . textView.setText("some text."); ./在Fragment中注入:Overridepublic View onCreateView(Lay

15、outInflater inflater, ViewGroup container, Bundle savedInstanceState) View view = inflater.inflate(R.layout.bitmap_fragment, container, false); / 加載fragment布局 ViewUtils.inject(this, view); /注入view和事件 ./在PreferenceFragment中注入:public void onActivityCreated(Bundle savedInstanceState) super.onActivityCr

16、eated(savedInstanceState); ViewUtils.inject(this, getPreferenceScreen(); /注入view和事件 ./ 其他重載/ inject(View view);/ inject(Activity activity)/ inject(PreferenceActivity preferenceActivity)/ inject(Object handler, View view)/ inject(Object handler, Activity activity)/ inject(Object handler, PreferenceGr

17、oup preferenceGroup)/ inject(Object handler, PreferenceActivity preferenceActivity)HttpUtils使用方法:普通get方法HttpUtils http = new HttpUtils();http.send(HttpRequest.HttpMethod.GET, "", new RequestCallBack<String>() Override public void onLoading(long total, long current, boolean isUploadin

18、g) testTextView.setText(current + "/" + total); Override public void onSuccess(ResponseInfo<String> responseInfo) textView.setText(responseInfo.result); Override public void onStart() Override public void onFailure(HttpException error, String msg) );使用HttpUtils上傳文件 或者 提交數(shù)據(jù) 到服務(wù)器(post方

19、法)RequestParams params = new RequestParams();params.addHeader("name", "value");params.addQueryStringParameter("name", "value");/ 只包含字符串參數(shù)時(shí)默認(rèn)使用BodyParamsEntity,/ 類似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。params.addBodyParameter(&quo

20、t;name", "value");/ 加入文件參數(shù)后默認(rèn)使用MultipartEntity("multipart/form-data"),/ 如需"multipart/related",xUtils中提供的MultipartEntity支持設(shè)置subType為"related"。/ 使用params.setBodyEntity(httpEntity)可設(shè)置更多類型的HttpEntity(如:/ MultipartEntity,BodyParamsEntity,FileUploadEntity,Input

21、StreamUploadEntity,StringEntity)。/ 例如發(fā)送json參數(shù):params.setBodyEntity(new StringEntity(jsonStr,charset);params.addBodyParameter("file", new File("path");.HttpUtils http = new HttpUtils();http.send(HttpRequest.HttpMethod.POST, "uploadUrl.", params, new RequestCallBack<St

22、ring>() Override public void onStart() testTextView.setText("conn."); Override public void onLoading(long total, long current, boolean isUploading) if (isUploading) testTextView.setText("upload: " + current + "/" + total); else testTextView.setText("reply: "

23、; + current + "/" + total); Override public void onSuccess(ResponseInfo<String> responseInfo) testTextView.setText("reply: " + responseInfo.result); Override public void onFailure(HttpException error, String msg) testTextView.setText(error.getExceptionCode() + ":"

24、 + msg); );使用HttpUtils下載文件:支持?jǐn)帱c(diǎn)續(xù)傳,隨時(shí)停止下載任務(wù),開始任務(wù)HttpUtils http = new HttpUtils();HttpHandler handler = http.download(" "/sdcard/httpcomponents-client-4.2.5-src.zip", true, / 如果目標(biāo)文件存在,接著未完成的部分繼續(xù)下載。服務(wù)器不支持RANGE時(shí)將從新下載。 true, / 如果從請(qǐng)求返回信息中獲取到文件名,下載完成后自動(dòng)重命名。 new RequestCallBack<File>()

25、Override public void onStart() testTextView.setText("conn."); Override public void onLoading(long total, long current, boolean isUploading) testTextView.setText(current + "/" + total); Override public void onSuccess(ResponseInfo<File> responseInfo) testTextView.setText(&quo

26、t;downloaded:" + responseInfo.result.getPath(); Override public void onFailure(HttpException error, String msg) testTextView.setText(msg); );./調(diào)用cancel()方法停止下載handler.cancel();BitmapUtils 使用方法BitmapUtils bitmapUtils = new BitmapUtils(this);/ 加載網(wǎng)絡(luò)圖片bitmapUtils.display(testImageView, "/ 加載本地

27、圖片(路徑以/開頭, 絕對(duì)路徑)bitmapUtils.display(testImageView, "/sdcard/test.jpg");/ 加載assets中的圖片(路徑以assets開頭)bitmapUtils.display(testImageView, "assets/img/wallpaper.jpg");/ 使用ListView等容器展示圖片時(shí)可通過PauseOnScrollListener控制滑動(dòng)和快速滑動(dòng)過程中時(shí)候暫停加載圖片listView.setOnScrollListener(new PauseOnScrollListener(

28、bitmapUtils, false, true);listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true, customListener);輸出日志 LogUtils/ 自動(dòng)添加TAG,格式: className.methodName(L:lineNumber)/ 可設(shè)置全局的LogUtils.allowD = false,LogUtils.allowI = false.,控制是否輸出log。/ 自定義log輸出LogUtils.customLogger = new xxxLogger()

29、;LogUtils.d("wyouflf");關(guān)于作者Email: wyouflf, wyouflf近來有一些其他網(wǎng)站盜用本博客內(nèi)容,希望尊重作者。如有問題請(qǐng)留言,轉(zhuǎn)載注明出處。參考:項(xiàng)目git地址實(shí)例:數(shù)據(jù)傳遞接口定義java view plaincopyprint?public interface IOAuthCallBack       public void getIOAuthCallBack(String result);&#

30、160;   接口調(diào)用:java view plaincopyprint?new xUtilsPost().cancelOrder(                                   

31、0;  PZTuanApplication.appUserName,                                      orderId + "&q

32、uot;, new IOAuthCallBack()                                            

33、 public void getIOAuthCallBack(                                          &#

34、160;       String result)                                       &

35、#160;       / TODO Auto-generated method stub                                 &#

36、160;            try                                     

37、;              JSONObject jo = new JSONObject(                           &#

38、160;                              result);                  

39、                                Message msg = cancelOrder           &#

40、160;                                              .obtainMessage(id,&#

41、160;jo);                                                

42、0; cancelOrder.sendMessage(msg);                                            

43、;   catch (JSONException e)                                         &#

44、160;         / TODO Auto-generated catch                                 &#

45、160;                / block                               &#

46、160;                  e.printStackTrace();                            

47、                                                  

48、                                                  

49、);  實(shí)例,BitmapUtils:java view plaincopyprint?public class xUtilsImageLoader /框架里面設(shè)置了緩存和異步操作,不用單獨(dú)設(shè)置線程池和緩存機(jī)制(也可以自定義緩存路徑)        private BitmapUtils bitmapUtils;      private Context mConte

50、xt;        public xUtilsImageLoader(Context context)           / TODO Auto-generated constructor stub          this.mContext&

51、#160;= context;          bitmapUtils = new BitmapUtils(mContext);          bitmapUtils.configDefaultLoadingImage(R.drawable.logo_new);/默認(rèn)背景圖片      

52、60;   bitmapUtils.configDefaultLoadFailedImage(R.drawable.logo_new);/加載失敗圖片          bitmapUtils.configDefaultBitmapConfig(Bitmap.Config.RGB_565);/設(shè)置圖片壓縮類型             &#

53、160;/*      *       * author sunglasses      * category 圖片回調(diào)函數(shù)      */      public class CustomBitmapLoadCallBack&#

54、160;extends              DefaultBitmapLoadCallBack<ImageView>             Override          public void&

55、#160;onLoading(ImageView container, String uri,                  BitmapDisplayConfig config, long total, long current)        

56、0;              Override          public void onLoadCompleted(ImageView container, String uri,          &

57、#160;       Bitmap bitmap, BitmapDisplayConfig config, BitmapLoadFrom from)               / super.onLoadCompleted(container, uri, bitmap, config,

58、 from);              fadeInDisplay(container, bitmap);                      Override    &#

59、160;     public void onLoadFailed(ImageView container, String uri,                  Drawable drawable)         

60、;      / TODO Auto-generated method stub                        private static final ColorDrawable TRANSPARENT

61、_DRAWABLE = new ColorDrawable(              android.R.color.transparent);      /*      * author sunglasses      *&#

62、160;category 圖片加載效果      * param imageView      * param bitmap      */      private void fadeInDisplay(ImageView imageView, Bitmap 

63、;bitmap) /目前流行的漸變效果          final TransitionDrawable transitionDrawable = new TransitionDrawable(                  new Drawa

64、ble  TRANSPARENT_DRAWABLE,                          new BitmapDrawable(imageView.getResources(), bitmap) );      &#

65、160;   imageView.setImageDrawable(transitionDrawable);          transitionDrawable.startTransition(500);            public void display(ImageView container,Stri

66、ng url)/外部接口函數(shù)          bitmapUtils.display(container, url,new CustomBitmapLoadCallBack();          實(shí)例:HttpGet:java view plaincopyprint?public class xUtilsGet /自動(dòng)實(shí)現(xiàn)異步處理,自

67、己不用處理        public void getJson(String url,RequestParams params,final IOAuthCallBack iOAuthCallBack)            HttpUtils http = new HttpUtils();

68、0;         http.configCurrentHttpCacheExpiry(1000 * 10);/設(shè)置超時(shí)時(shí)間          http.send(HttpMethod.GET, url, params, new RequestCallBack<String>() /接口回調(diào)   

69、;             Override              public void onFailure(HttpException arg0, String arg1)        &#

70、160;          / TODO Auto-generated method stub                              Ove

71、rride              public void onSuccess(ResponseInfo<String> info)                   / TODO Auto-genera

72、ted method stub                  iOAuthCallBack.getIOAuthCallBack(info.result);/利用接口回調(diào)數(shù)據(jù)傳輸                  &#

73、160;     );            public void getCataJson(int cityId,IOAuthCallBack iOAuthCallBack) /外部接口函數(shù)          String url = "

74、http:/xxxxxxxxxx"          RequestParams params = new RequestParams();          params.addQueryStringParameter("currentCityId", cityId+"");  

75、;        getJson(url,params,iOAuthCallBack);          實(shí)例:HttpPost(和HttpGet類似):java view plaincopyprint?public class xUtilsPost /自動(dòng)實(shí)現(xiàn)異步處理        public void doPost(String url, RequestParams params,              final IOAuthCallBack iOAuthCallBack)&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論