xUtils 框架的使用注意点

来源:互联网 发布:真人卡通头像制作软件 编辑:程序博客网 时间:2024/05/22 14:02

为了更好的理解xUtils ,给以后的自己看下。

xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...


2.3.6主要更新内容:

* BitmapLoadCallBack添加onLoading回调,用于显示进度。

* @Table注解添加execAfterTableCreated属性,可自定义表创建之后要执行的sql。

* 在sd卡上创建数据库文件时目录不存在时自动创建。

* Bitmap模块添加图片自动旋转设置。


xUitls最低兼容android 2.2 (api level 8)

目前xUtils主要有四大模块

DbUtils模块:ViewUtils模块:HttpUtils模块:BitmapUtils模块:





DbUtils模块

android中的orm框架,一行代码就可以进行增删改查; 支持链式表达查询,更直观的查询语义

数据库 ,支持事务,默认关闭;

  DbUtils db = DbUtils.create(this.getActivity());


可通过注解自定义表名@Table(name = "child") ,列名@Column(column = "name"),外键 @Foreign(column = "parentId", foreign = "id"),唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);和同学交流称是 代码混淆功能么


支持绑定外键,保存实体时外键关联实体自动保存或更新;


ViewUtils模块:

内存管理使用lru算法,更好的管理bitmap内存; 


android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定;


新的事件绑定方式,使用混淆工具混淆后仍可正常工作;

目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。

如:

@ContentView(R.layout.main)

extends FragmentActivity 




HttpUtils模块:


支持同步,异步方式的请求;


支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS(rtsp),TRACE,CONNECT 请求;


下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;


返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。


BitmapUtils模块:


加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;


支持加载网络图片和本地图片;


内存管理使用lru算法,更好的管理bitmap内存;


可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等... 


LogUtils.customTagPrefix = "xUtilsSample"; // 方便调试时过滤 adb logcat 输出
        LogUtils.allowI = false; //关闭 LogUtils.i(...) 的 adb log 输出

 // 关于数据库更新问题.如果没有添加DbUpgradeListener 那么将会删除所有的表.详情:DbUtils79行

DbUtils db = DbUtils.create(this.getActivity(), "myDb", 3,
                         new DbUpgradeListener() {
                              @Override
                              public void onUpgrade(DbUtils arg0, int arg1, int arg2) {
                                   // TODO Auto-generated method stub
                                   System.out.println("执行更新操作,老版本-->>" + arg1
                                             + " 新版本-->>" + arg2);
                                   try {
                                        String sql = "ALTER TABLE "
                                                  + TableUtils.getTableName(Child.class)
                                                  + " ADD COLUMN new_test TEXT";
                                        arg0.execNonQuery(sql);
                                        System.out.println("执行sql语句为-->>" + sql);
                                   } catch (DbException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                   }
                              }
                         });
select * from series where userid = ? and stock_code = ?  ordey by upload_time desc , isup   分页功能 limti(每页数量) offset 从第几行开始算。

 datas = db.findAll(Selector.from(Series.class).where("userid", "=", userid).and(WhereBuilder.b("stock_code", "=", stock_code).and("state", "=", Series.VALID_STATE)).orderBy("upload_time desc,isup").limit(page_num).offset(page_num * (page - 1)));

0 0
原创粉丝点击