一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!
来源:互联网 发布:双肩背包淘宝 编辑:程序博客网 时间:2024/05/16 19:07
转载优秀博文: http://blog.csdn.net/u012702547/article/details/52577403
相信小伙伴们在开发中或多或少都可能遇到过这样的问题:打开一个应用后,为了快速响应,先将数据库中的数据呈现给用户,然后再去网络上请求数据,请求成功之后将数据缓存至数据库,同时更新UI,但是我们经常会这样想,可不可以我只将数据缓存至数据库,当数据库中的数据发生改变时,UI会自动更新?这个当然可以实现,我们今天就来看看square公司推出的一个响应式数据库框架SQLBrite。
1.准备工作
SQLBrite项目地址:https://github.com/square/sqlbrite
将SQLBrite引入到我们的项目中:
在处理线程问题时,由于要使用到RxAndorid中相关的类,所以我们还要引入RxAndroid:
另外:
SQLBrite的使用基于RxJava的使用,如果小伙伴们对RxJava的使用尚不熟悉,请移步这里RxAndroid结合Retrofit,看看谁才是最佳拍档!
2.开始使用
和以前一样,讲解代码之前我们先来看看效果图:
大家看到,当我添加数据时ListView会自动更新,删除数据或者修改数据时ListView一样会自动更新,就是这么简单一个效果,我们来看看实现方式。
2.1创建DBHelper
首先我们需要创建一个DBHelper,由于SQLBrite只是对数据的增删改查过程重新做了封装,其他的以前怎么写现在还是怎么写。DBHelper的创建和我们Sqlite中DBHelper的创建方式一模一样,假设我创建一个User表,如下:
2.2初始化数据库,获取db对象
获取db对象只要三行代码,如下:
第一步先是获取一个SqlBrite对象,这个通过create方法直接获取即可,然后创建一个DBHelper的实例,最后通过sqlBrite类中的wrapDatabaseHelper方法来获取一个db实例,第一个参数不必说,第二个参数表示数据库的操作是在哪一个线程中进行的,AndroidSchedulers.mainThread()方法表示数据库的操作在主线程中执行。获取的db对象之后,后面的增删改查操作我们都要在这个db对象中进行。
2.3添加数据
第一个参数表示要操作的表名,第二个参数表示要插入的数据。
2.4删除数据
这里的参数都很简单,不多说。
2.5修改数据
2.6查询数据
SQLBrite中可以直接通过SQL语句来查询数据,拿到Cursor对象之后剩下的就好说了。
2.7事务的使用
大批量进行数据插入操作的时候,我们可以使用事务,使用方式如下:
OK,这就是SQLBrite类的一个简单使用,很简单,整个源码也只有几百行。
Demo下载http://download.csdn.net/detail/u012702547/9633237
以上。
- 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!
- 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!
- sqlbrite 响应式数据库(rx数据库)
- SQLBrite:一个响应式的数据查询框架
- android实现数据库和UI同步更新
- Rxjava+数据库?来用用SqlBrite和SqlDelight吧!
- 同步LDAP和数据库的一个例子
- 完美解决ASP 不能更新。数据库或对象为只读.
- 完美解决ASP 不能更新。数据库或对象为只读。
- ui更新数据库 记录
- RxAndroid之操作数据库SqlBrite(RXAndroid实现数据库的增、删、改、查)
- RxAndroid之操作数据库SqlBrite(RXAndroid实现数据库的增、删、改、查)
- android解决:使用多线程和Handler同步更新UI
- 版本Ui更新响应和无响应
- dataGridView1与数据库数据的同步更新
- otter 数据库同步框架
- 行转列--Excel和数据库的完美结合
- ContentProvider之数据库更新UI
- WordPruningBreadthFirstSearchManager API
- pwnable之tiny_easy
- Toast的工具类和自定义工具类
- Codeforces Round #422 (Div. 2) B. Crossword solving
- Presentation Error的问题
- 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!
- 乐观锁
- android 使用sharedpreferences 保存对象
- 代理模式
- Spark根据key,按照一定条件对数据去重
- 游戏服务器内存管理笔记
- 淘宝浏览足迹功能实现(含代码)--cookie案例
- 缺少Python27_d.lib的解决方法
- Cannot resolve symbol AppCompatActivity