没有合适的资源?快使用搜索试试~ 我知道了~
Rxjava2_Flowable_Sqlite_Android数据库访问实例
0 下载量 131 浏览量
2021-01-20
10:05:57
上传
评论
收藏 72KB PDF 举报
温馨提示
试读
6页
一、使用Rxjava访问数据库的优点: 1.随意的线程控制,数据库操作在一个线程,返回数据处理在ui线程 2.随时订阅和取消订阅,而不必再使用回调函数 3.对读取的数据用rxjava进行过滤,流式处理 4.使用sqlbrite可以原生返回rxjava的格式,同时是响应式数据库框架 (有数据添加和更新时自动调用之前订阅了的读取函数,达到有数据添加自动更新ui的效果, 同时这个特性没有禁止的方法,只能通过取消订阅停止这个功能,对于有的框架这反而是一种累赘) 二、接下来之关注实现过程: 本次实现用rxjava2的Flowable,有被压支持(在不需要被压支持的情况建议使用Observable) 实现
资源详情
资源评论
资源推荐
Rxjava2_Flowable_Sqlite_Android数据库访问实例数据库访问实例
一、使用一、使用Rxjava访问数据库的优点:访问数据库的优点:
1.随意的线程控制,数据库操作在一个线程,返回数据处理在ui线程
2.随时订阅和取消订阅,而不必再使用回调函数
3.对读取的数据用rxjava进行过滤,流式处理
4.使用sqlbrite可以原生返回rxjava的格式,同时是响应式数据库框架
(有数据添加和更新时自动调用之前订阅了的读取函数,达到有数据添加自动更新ui的效果,
同时这个特性没有禁止的方法,只能通过取消订阅停止这个功能,对于有的框架这反而是一种累赘)
二、接下来之关注实现过程:二、接下来之关注实现过程:
本次实现用rxjava2的Flowable,有被压支持(在不需要被压支持的情况建议使用Observable)
实现一个稳健的的可灵活切换其他数据库的结构,当然是先定义数据库访问接口。然后跟具不同的数据库实现接口的方法
定义接口:定义接口:(对于update,delete,insert,可以选择void类型,来简化调用代码,但缺少了执行结果判断)
public interface DbSource {
//String sql = "insert into table_task (tid,startts) values(tid,startts)";
Flowable<Boolean> insertNewTask(int tid, int startts);
//String sql = "select * from table_task";
Flowable<List<TaskItem>> getAllTask();
//String sql = "select * from table_task where endts = 0";
Flowable<Optional<TaskItem>> getRunningTask();
//String sql = "update table_task set isuploadend=isuploadend where tid=tid";
Flowable<Boolean> markUploadEnd(int tid, boolean isuploadend);
//String sql = "delete from table_task where tid=tid and endts>0";
Flowable<Boolean> deleteTask(int tid);
}
三、用三、用Android原生的原生的Sqlite实现数据库操作实现数据库操作
public class SimpleDb implements DbSource {
private static SimpleDb sqlite;
private SqliteHelper sqliteHelper;
private SimpleDb(Context context) {
this.sqliteHelper = new SqliteHelper(context);
}
public static synchronized SimpleDb getInstance(Context context) {
if (sqlite == null )
sqlite = new SimpleDb(context);
return sqlite;
}
Flowable<Boolean> insertNewTask(int tid, int startts) {
return Flowable.create(new FlowableOnSubscribe<Boolean>() {
@Override
public void subscribe(FlowableEmitter<Boolean> e) throws Exception {
//这里数据库操作只做示例代码,主要关注rxjava的Flowable使用方法
ContentValues values = new ContentValues();
values.put(“tid”, 1);
values.put(“startts”,13233);
if(sqliteHelper.getWriteableDatabase().insert(TABLE_NAME, null, values) != -1)
e.onNext(true);
else
e.onNext(false);
weixin_38639872
- 粉丝: 9
- 资源: 953
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0