初步使用xUtils(1)

来源:互联网 发布:大数据安全技术与应用 编辑:程序博客网 时间:2024/05/23 01:57

网络框架有不少,并且都非常不错,最近项目中有使用xUtils,就先对xUtils进行一点了解,初步了解:

GitHub中的地址:https://github.com/wyouflf/xUtils(可以下载例子去查阅查看) 

对于xUtils,了解到时基于aFinal写的一个快速开发框架:

存在四大模块GitHub介绍很详细(ViewUtils,HttpUtils,BitmapUtils,DbUtils);

对于ViewUtils使用注解方式去减少代码量,少了findById(),自己试着使用了一下,感觉挺不错,毕竟以前这些东西都是自己去写的,一个个findbyid出来的。感觉方便了很多

例如:

@ViewInject(R.id.listView1)
private ListView mListView;

但是对于Activity只需要ViewUtils.inject(this);使用这个模块去注解一下就好;使用中,在Fragment中这样写,包了个错,后来看了一下库,点击进去才发现,把Activity的Context传进去进好了,ViewUtils.inject(this,getActivity);简单的使用这个模块就OK了,

对于网络请求;这个是很重要的模块,无论使用什么,或者是自己去封装一个Http的模块,都是很重要的一部分的,对于xUtils来说,里面封装的很好了已经

class GaoTask extends RequestCallBack<String> {@Overridepublic void onFailure(HttpException arg0, String arg1) {ToastUtils.show(getApplicationContext(), "加载失败");}@Overridepublic void onSuccess(ResponseInfo<String> arg0) {list = DownloadData.carseGao(arg0.result, getApplicationContext());adapter.addjson(list);mListView.setAdapter(adapter);adapter.notifyDataSetChanged();}}

本来是四个方法,常用的是这两个,一个数据请求失败,一个试数据请求成功;

其实对于这个框架,最看种的是数据库这块:

这个只需要一行代码就可以进行(增、删、改、查)

使用数据库的思路我是这样理解的

①判断网络

②存在网络-异步任务请求数据-在请求数据后进行数据库的更新(包括删除多余数据)

③读取数据库数据

④无网络时直接读取本地数据数据

自己感觉这样写是有好处的,可以减少耗时操作,当然对于数据的更新,这个框架中还没仔细去看,不过和自己去写应该是差不多的

if (DBUtilsTools.HasTable("GaoData", context)) {// 如果表存在DBUtilsTools.upData(gaoData);// 更新数据} else {DBUtilsTools.create(context, "changzhilvyou", "lvyou.db");// 创建数据库DBUtilsTools.inrest(gaoData);// 插入数据}}System.out.println("list---->>>"+gaoDatas);DBUtilsTools.setDeteleData(gaoDatas,"GaoData");

先判断数据库中的表是否存在(是否第一次进行加载)——存在(更新数据)——不在存在(创建数据库-需要把当前这个数据插入进去)

这个更新只是把已经存在的数据进行数据的更新,而如第一次加载下载存入数据库10条数据,第二次则是加载5条,那么一定存在多余的数据,这个时候就需要我们去删除

于是就想到去使用HashMap进行key的比较:

/** * 判断表是否存在 *  * @param name * @return */public static boolean HasTable(String name, Context context) {// 判断某一个表是否存在boolean result = false;try {System.out.println("表的判断");db = dbUtils.getDatabase();cursor = db.rawQuery("select * from " + name, null);if (cursor.getCount() != 0) {return true;} else {return false;}} catch (Exception e) {System.err.println(e);e.printStackTrace();}return result;}

/** * 把list集合传化为HashMap * @param list数据源 */@SuppressLint("UseSparseArrays")public static void changListToMap(List<Person> list) {if (null != list && list.size() > 0) {whitemap = new HashMap<Integer, Person>();for (int i = 0; i < list.size(); i++) {Person person = (Person) list.get(i);whitemap.put(person.getId(), list.get(i));}}}/** * 使用HashMap读取数据库数据 * @param name 表名 * @throws DbException */@SuppressLint("UseSparseArrays")public static void readDbData(String name) throws DbException {dbmap = new HashMap<Integer, Person>();db = dbUtils.getDatabase();cursor = db.rawQuery("select * from " + name, null);// 循环遍历数据库数据存入集合while (cursor.moveToNext()) {Person person2 = new Person();person2.setId(cursor.getInt(cursor.getColumnIndexOrThrow("id")));dbmap.put(cursor.getInt(cursor.getColumnIndexOrThrow("id")),person2);}cursor.close();// 关闭}/** * 把数据库数据和list集合数据进行对比进行更新(删除)功能 * @param list 数据源 * @param name 表名 * @throws DbException */public static void setDeteleData(List<Person> list, String name)throws DbException {changListToMap(list);// 把得到的数据使用HashMap存放readDbData(name);// 读数据库,把数据库的数据存放在Hashmap中// 如果网络数据不为null时if (whitemap.size() > 0 && whitemap != null) {// 加载本地的数据if (dbmap.size() > 0 && dbmap != null) {List<Person> detelelist = new ArrayList<Person>();// 需要去删除的数据源Set<Entry<Integer, Person>> loadkey = dbmap.entrySet();for (@SuppressWarnings("rawtypes")Iterator it = loadkey.iterator(); it.hasNext();) {@SuppressWarnings("rawtypes")Map.Entry entry = (Entry) it.next();if (!whitemap.containsKey(entry.getKey())) {Person person2 = (Person) entry.getValue();detelelist.add(person2);}}dbUtils.deleteAll(detelelist);// 删除本地数据库中多余的数据}}}

这样基本的使用完全可以了,不过看一些论坛中讨论说这个框架好像是混淆后,APK会出错,并且没使用过注解,开始使用不习惯,决定项目中去使用,看看效果!发现有新的使用会继续写下来,为自己提供一个笔记。

当然在用这个做Demo前,也看了一下Volley框架和使用最多的Http请求框架android-async-http-master和图片缓存Android-Universal-Image-Loader-master,感觉吧,当然自己使用完全是可以了,不过这些东西毕竟是别人封装,和自己深入去写同样是不同的,目前的水平无法写的了这样的(自己使用的)工具类,怕存在很严重的BUG,这次项目中就是使用这些(选择性的)包吧。试试效果看,唯独担心后期出现BUG,对框架不了解,再去修改就费时间了。“赶快成长,自己去写”!

0 0
原创粉丝点击