以前项目都是和团队一起做 ,现在来了一个小公司。需要自己独自带队了。自己独自做一个项目,选择框架时,就用到了xutils3。自己结合资料和源码做出的总结
1.先介绍xutils3
xUtils3 是 xUtils 的升级版,功能和性能都在提高
xUtils3 主要有四大模块:注解模块,联网模块,图片加载模块,数据库模块;
注解模块:用于在 Activity 或者 Fragment 中初始化布局文件,便于代码更加简洁;联网模块:xUtils3 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的 ORM,更多的事件注解支持且不受混淆影响;图片加载模块:加载图片很方便并且不用担心内存溢出,还可以图片绑定支持 gif(受系统兼容性影响, 部分 gif 文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪,支持自动旋转.数据库模块:数据库 api 简化提高性能, 达到和 greenDao 一致的性能
xUtils3 的主要功能
1、注解2、联网请求文本数据3、大文件下载
4、大文件上传5、请求图片6、数据库模块达到和 greenDao 一致的性能
下载地址& 运行 xUtils3 案例
https://github.com/wyouflf/xUtils3
今天主要讲连网模块
第一步要导入library
有两种方法
第一方法:本地下载导入
第二方法 :
compile 'org.xutils:xutils:3.3.42'第二步:创建 application ,进行初始化Application//xUtils3初始化x.Ext.init(this);// 是否输出debug日志, 开启debug会影响性能.x.Ext.setDebug(true);第三步 :就可以用 了,首先教大家 get,post方法,进行文本传送直接上代码吧//1.Get请求 //2.Post请求 RequestParams params = new RequestParams("http://api.m.mtime.cn/PageSubArea/TrailerList.api"); params.addBodyParameter("username","123456"); params.addBodyParameter("passWord","password");// params.addParameter(); params.addParameter("string","object");// params.addHeader(); params.addHeader("name","value");// params.addBodyParameter(); params.addBodyParameter("name","file"); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Log.e("TAG", "xUtis3联网请求成功==" + result);// textView.setText("Get请求的结果——————" + result); Toast.makeText(XUtils3NetActivity.this, result, Toast.LENGTH_LONG).show(); textView.setText("Post请求的结果——————" + result); } @Override public void onError(Throwable ex, boolean isOnCallback) { Log.e("TAG", "xUtis3联网请求失败==" + ex.getMessage()); textView.setText("xUtis3联网请求失败==" + ex.getMessage()); } @Override public void onCancelled(CancelledException cex) { Log.e("TAG", "onCancelled==" + cex.getMessage()); } @Override public void onFinished() { Log.e("TAG", "onFinished=="); } });接着用xutils3下载文件的代码RequestParams params = new RequestParams("http://y-t-s-c.com/APP/ytsc.apk");//数据的链接 //设置保存数据 params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/atguigu/ytsc.apk"); //设置是否可以立即取消下载 params.setCancelFast(true); //设置是否自动根据头信息命名 params.setAutoRename(false); //设置断点续传 params.setAutoResume(true); params.setExecutor(new PRiorityExecutor(3, true));//自定义线程池,有效的值范围[1, 3], 设置为3时, 可能阻塞图片加载. x.http().get(params, new Callback.ProgressCallback<File>() { /** * 当下载成功的时候回调这个方法,并且把下载到哪个路径回传过来 * @param file */ @Override public void onSuccess(File file) { Log.e("TAG", "onSuccess==" + file.toString()); Toast.makeText(XUtils3NetActivity.this, "onSuccess==" + file.toString(), Toast.LENGTH_SHORT).show(); } @Override public void onError(Throwable ex, boolean isOnCallback) { Log.e("TAG", "onError==" + ex.getMessage()); } @Override public void onCancelled(CancelledException cex) { Log.e("TAG", "onCancelled==" + cex.getMessage()); } @Override public void onFinished() { Log.e("TAG", "onFinished=="); } @Override public void onWaiting() { Log.e("TAG", "onWaiting=="); } @Override public void onStarted() { Log.e("TAG", "onStarted=="); } @Override public void onLoading(long total, long current, boolean isDownloading) { progressbar.setMax((int) total); progressbar.setProgress((int) current); Log.e("TAG", "onLoading==" + current + "/" + total + ",isDownloading==" + isDownloading); } });然后是 文件上传的代码RequestParams params = new RequestParams("文件上传的url"); //以表单方式上传 params.setMultipart(true); //设置上传文件的路径 params.addBodyParameter("File", new File(Environment.getExternalStorageDirectory() + "/atguigu/480.mp4"), null, "oppo.mp4");// params.addBodyParameter("name","value","contenttype","filename"); x.http().post(params, new Callback.ProgressCallback<File>() { /** * 当下载成功的时候回调这个方法,并且把下载到哪个路径回传过来 * @param file */ @Override public void onSuccess(File file) { Log.e("TAG", "onSuccess==" + file.toString()); Toast.makeText(XUtils3NetActivity.this, "onSuccess==" + file.toString(), Toast.LENGTH_SHORT).show(); } @Override public void onError(Throwable ex, boolean isOnCallback) { Log.e("TAG", "onError==" + ex.getMessage()); } @Override public void onCancelled(CancelledException cex) { Log.e("TAG", "onCancelled==" + cex.getMessage()); } @Override public void onFinished() { Log.e("TAG", "onFinished=="); } @Override public void onWaiting() { Log.e("TAG", "onWaiting=="); } @Override public void onStarted() { Log.e("TAG", "onStarted=="); } @Override public void onLoading(long total, long current, boolean isDownloading) { progressbar.setMax((int) total); progressbar.setProgress((int) current); Log.e("TAG", "onLoading==" + current + "/" + total + ",isDownloading==" + isDownloading); } });
新闻热点
疑难解答