Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(二)

本文是关于Android中使用RxJava、Retrofit和Realm进行数据加载、缓存和界面更新的续篇。重点讨论了如何在Realm中配合RxJava进行查询操作,注意到了使用Realm.getDefaultInstance().asObservable()可能导致的多次数据刷新问题,建议使用filter/first()避免。此外,介绍了如何结合concat操作符将查询和网络请求整合,实现无网络时读取缓存,有网络时请求并更新数据的过程。
摘要由CSDN通过智能技术生成

继续完善上次懵懵懂懂的流程.

原理还是一样的.不明白的看一看
Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(一)

这次整合的是数据库Realm点击查看中文文档感兴趣的可以去看看.
使用Realm的原因是它和Retrofit一样.天生支持Rxjava,当然还有其他的,不过我没用过.



Realm配置 Applaction中 ,如果配置了多进程的话.最好是判断一下包名,防止调用多次

 private void initRealm() {
        RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
                .name("xxx.realm")
                .schemaVersion(1)
                .rxFactory(new RealmObservableFactory()) //默认Rxjava支持,貌似不写也可以
                .deleteRealmIfMigrationNeeded()//测试使用,每次都删除原来的数据
//                .encryptionKey(key)
//                .modules(new MySchemaModule())
//                    .migration(migration)
                .build();
        Realm.setDefaultConfiguration(realmConfiguration);
    }

Realm 配合Rxjava查询方法,官方文档配置

// Combining Realm, Retrofit and RxJava (Using Retrolambda syntax for brevity)
// Load all persons and merge them with their latest stats from GitHub (if they have any)
Realm realm = Realm.getDefaultInstance();
GitHubService api = retrofit.create(GitHubService.class);
realm.where(Person.class).isNotNull("username").findAllAsync().asObservable()
    .filter(person
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值