博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Rxjava2操作Realm
阅读量:6504 次
发布时间:2019-06-24

本文共 2501 字,大约阅读时间需要 8 分钟。

最近项目需要使用作为本地数据库,Realm作为移动端流行数据库框架之一,自身提供的API已经非常完善且使用简单,但作为使用了RxJava全家桶的项目,直接调用Realm的API总感觉有点不爽, 难道不能使用Rxjava来方便调用Realm吗?

google一下发现自己不是第一个有这种想法的人,已经有人实现了这个想法

国内的文章也是参考国外某位大神的代码做出了一些修改,但由于文章较早,使用的Rxjava1,与项目使用的Rxjava2稍微有些区别,就花点时间将原代码改造 成了Rxjava2版本,方便以后使用。

源码已上传github:

简单调用:

/**     * 增加     */    private void add() {        Random random = new Random();        int i = random.nextInt(10000);        final Student student = new Student();        student.setId(i);        student.setNanme("name " + i);        student.setAge(i);        RealmObservable                .createObservable(new Function
() { @Override public Student apply(Realm realm) throws Exception { return realm.copyToRealm(student); } }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer
() { @Override public void accept(Student s) throws Exception { Log.d(TAG, "添加成功"); Toast.makeText(MainActivity.this, "添加成功!", Toast.LENGTH_SHORT).show(); } }, new Consumer
() { @Override public void accept(Throwable throwable) throws Exception { Log.e(TAG, throwable.getMessage()); } }, new Action() { @Override public void run() throws Exception { } }); }复制代码
/**     * 查找     */    private void find() {        RealmObservable                .createObservable(new Function
>() { @Override public List
apply(Realm realm) throws Exception { RealmResults
all = realm.where(Student.class).findAll(); return realm.copyFromRealm(all); } }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer
>() { @Override public void accept(List
students) throws Exception { tv.setText(students.toString()); } }, new Consumer
() { @Override public void accept(Throwable throwable) throws Exception { } }); }复制代码

转载地址:http://tbhyo.baihongyu.com/

你可能感兴趣的文章
今年以来硅晶圆涨幅约达40%
查看>>
构建智能的新一代网络——专访Mellanox市场部副总裁 Gilad Shainer
查看>>
《数字视频和高清:算法和接口》一导读
查看>>
《中国人工智能学会通讯》——6.6 实体消歧技术研究
查看>>
如何在Windows查看端口占用情况及查杀进程
查看>>
云存储应用Upthere获7700万美元股权债务融资
查看>>
国家互联网应急中心何世平博士主题演讲
查看>>
洗茶,你误会了多少年?
查看>>
移动大数据“后市场”受青睐 亟需数据深度学习人才
查看>>
贵阳高新区力争打造“千亿级大数据园区”
查看>>
安防众筹不止于卖产品 思维拓展刺激消费
查看>>
OpenSSH曝高危漏洞 会泄露私钥
查看>>
艾特网能获2016APCA用户满意品牌大奖
查看>>
《软件工艺师:专业、务实、自豪》一2.4 《敏捷软件开发宣言》
查看>>
《CCNP TSHOOT 300-135学习指南》——第2章 结构化故障检测与排除进程
查看>>
《Java EE 7精粹》—— 2.5 非阻塞I/O
查看>>
《Python数据科学实践指南》一2.2 字符串
查看>>
《R数据可视化手册》——1.1 安装包
查看>>
《iOS创意程序设计家》——导读
查看>>
spring-aop
查看>>